Interface Any2OneChannelInt
-
- All Known Implementing Classes:
Any2OneChannelIntImpl
,Any2OneIntImpl
,BufferedAny2OneChannelIntImpl
,PoisonableAny2OneChannelIntImpl
,PoisonableBufferedAny2OneChannelInt
public interface Any2OneChannelInt
This defines an interface for an any-to-one integer channel, safe for use by many writers and one reader.The only methods provided are to obtain the ends of the channel, through which all reading and writing operations are done. Only an appropriate channel-end should be plugged into a process – not the whole channel. A process may use its external channels in one direction only – either for writing or reading.
Actual channels conforming to this interface are made using the relevant static construction methods from
Channel
. Channels may besynchronising
,buffered
,poisonable
orboth
(i.e. buffered and poisonable).Description
Any2OneChannelInt is an interface for an integer channel which is safe for use by many writing processes but only one reader. Writing processes compete with each other to use the channel. Only the reader and one writer will actually be using the channel at any one time. This is managed by the channel – user processes just read from or write to it.Please note that this is a safely shared channel and not a message gatherer. Currently, gathering has to be managed by writing an active process.
The reading process may
ALT
on this channel. The writing process is committed (i.e. it may not back off).The default semantics of the channel is that of CSP – i.e. it is zero-buffered and fully synchronised. The reading process must wait for a matching writer and vice-versa.
The static methods of
Channel
construct channels with either the default semantics or with buffering to user-specified capacity and a range of blocking/overwriting policies. Various buffering plugins are given in the org.jcsp.util package, but careful users may write their own.The
Channel
methods also provide for the construction ofPoisonable
channels and for arrays of channels.Implementation Note and Caution
Fair servicing of writers to this channel depends on the fair servicing of requests to enter a synchronized block (or method) by the underlying Java Virtual Machine (JVM). Java does not specify how threads waiting to synchronize should be handled. Currently, Sun's standard JDKs queue these requests - which is fair. However, there is at least one JVM that puts such competing requests on a stack - which is legal but unfair and can lead to infinite starvation. This is a problem for any Java system relying on good behaviour from synchronized, not just for these any-1 channels.
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description AltingChannelInputInt
in()
Returns the input end of the channel.SharedChannelOutputInt
out()
Returns the output end of the channel.
-
-
-
Method Detail
-
in
AltingChannelInputInt in()
Returns the input end of the channel.
-
out
SharedChannelOutputInt out()
Returns the output end of the channel.
-
-