[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: CSP and Isolates



Doug Lee wrote:
>> Well, we had all this 17 years ago with the transputer
>
> For now and the near future shared memory multiprocessing has won the
parallel architecture wars.  LAN-Clusters are a close second. 
> But even here, distributed shared memory (DSM)-based approaches seem to be
winning.

I am a bit confused here. What do you mean by "won"? Do you mean that the
transputer lost and therefore CSP lost? I don't see the transputer as the
only representative for the conceptual ideas behind CSP. Nowadays, CSP is
also succesfully applied on heterogeneous systems, with or without shared
memory. A LAN-Cluster with channels is like a transputer to me. CSP based
programs are extremely portable.

About the JSR-121. I have a strong feeling that the authors of JSR-121 are
inventing the wheel again. I belief that occam/CSP offers a better, simpler,
and more elegant solution for Java than JSR-121. The problem is perhaps that
they don't realize this. They should try to translate the conceptual ideas
of occam/CSP to their ideas, and I am convinced that everything they want
already exists. I wonder if they have played with JCSP/CTJ? 

> It now appears that JSR-121 will support the simplest and most practical
(yes, these are usually contradictory in Java) mechanism possible to 
> provide basic communication among isolates.

If that is the case then JSR-121 must have CSP channels, because they are
the simplest and most practical ones. Sometimes these primitives are too
simple, and we may need call-channels (same flavor as Ada's entry-accept
constructs).

Channels provide one primitive interface for rendezvous communication (for
fair and reactive behavior), buffered communication, unidirectional or
bidirectional communication, hardware access points, interrupt control,
preventing priority inversion problems, exception triggers. The channels
inputs and outputs would specify excellent interfaces for Isolates.

I am not an occam or transputer user. Instead, I use CTJ (similar as JCSP,
but with real-time features) and with this package I already have a
Real-Time Java specification (long before JSR-1). If my JVM is fast enough
and has predictable multithreading then that's all I need to create reliable
real-time software in Java. Our 1-to-1 translation to C++ is hard real-time
and no operating system is required. A slightly modified CTJ runs real-time
on a Java processor by Quest Innovations
(http://www.quest-innovations.com/html/) here in the Netherlands.

Please, don't blame me if I am too enthusiast about CSP for Java. I know
that I am addicted to this wonderful technology. I hope that I can make you
and the JSR-121 team enthusiastic as well ;).

This is a response from my point of view.

Gerald.