Package org.jcsp.lang
Class BufferedAny2OneChannelIntImpl
- java.lang.Object
-
- org.jcsp.lang.Any2OneIntImpl
-
- org.jcsp.lang.BufferedAny2OneChannelIntImpl
-
- All Implemented Interfaces:
Any2OneChannelInt
,ChannelInternalsInt
class BufferedAny2OneChannelIntImpl extends Any2OneIntImpl
This implements an any-to-one integer channel with user-definable buffering, safe for use by many writers and one reader.Description
BufferedAny2OneChannelIntImpl implements an any-to-one integer channel with user-definable buffering. It 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 taken care of by BufferedAny2OneChannelIntImpl -- user processes just read from or write to it.The reading process may
ALT
on this channel. The writing process is committed (i.e. it may not back off).The constructor requires the user to provide the channel with a plug-in driver conforming to the
ChannelDataStoreInt
interface. This allows a variety of different channel semantics to be introduced -- including buffered channels of user-defined capacity (including infinite), overwriting channels (with various overwriting policies) etc.. Standard examples are given in the org.jcsp.util package, but careful users may write their own.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.
-
-
Constructor Summary
Constructors Constructor Description BufferedAny2OneChannelIntImpl(ChannelDataStoreInt data)
-
Method Summary
-
Methods inherited from class org.jcsp.lang.Any2OneIntImpl
endRead, in, out, read, readerDisable, readerEnable, readerPending, readerPoison, startRead, write, writerPoison
-
-
-
-
Constructor Detail
-
BufferedAny2OneChannelIntImpl
public BufferedAny2OneChannelIntImpl(ChannelDataStoreInt data)
-
-