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

NEW CTJ 0.9 rev. 17

Communicating Threads for Java

The latest version of ?Communicating Threads for Java? (CTJ) revision 17 is

This version contains lots of updates, such as several fixes and new
features. The CTJ library can be downloaded from our web site


New features are:

- A new Channel_of_ObjectObject channel is included that supports multi-way
communication between two processes. This channel has a readwrite(Object
obj1, Object obj2) method and a writeread(Object obj1, Object obj2) method.
Two processes must each invoke one of these methods to engage in a
communication event. On a communication event between the processes P1
(performing readwrite(obj1,obj2)) and P2 (performing writeread(obj1,obj2)),
object P2.obj1 will be copied to the other side into P1.obj1 and object
P1.obj2 will be copied in P2.obj2. This channel is EXPERIMENTAL and does not
yet support linkdrivers.

- The Alternative and PriAlternative constructs have been updated with a
*new* algorithm which allows better fairness for the Alternative construct
and the PriAlternative constructs in the presence of priority. Both
constructs can adapt their guard selection algorithm based on the priorities
of the client processes. This allows better performance for high priority

- Now, the Alternative and PriAlternative constructs are guards themselves
that enable nesting of Alternative and PriAlternative constructs.

- Each Channel can be used as a guard. Channels can directly be listed under
an Alternative or PriAlternative construct without declaring intermediate
Guard objects. The mechanism will determine if a guard is an input-guard or
an output-guard. The processes SKIP and STOP are guards as well.

- Channels now support unchecked exceptions. Implementing a try-catch-clause
surrounding the channel read and write statements is not required anymore.
This makes your code more readable. Channels that possibly could throw
IOExceptions on the occurrence of errors should be catched (e.g., channels
with I/O link drivers).

- New buffered linkdrivers have been added:
  - OverSamplingBuffer
  - SubSamplingBuffer
  - BoundedBuffer
  - UpperBoundedBuffer
  - LowerBoundedBuffer

Gerald Hilderink