CSP for Java
(JCSP) 1.1-rc1

org.jcsp.lang
Interface Any2OneChannelInt


public interface Any2OneChannelInt

This defines an interface for an any-to-one integer channel, safe for use by many writers and one reader.

Description

Any2OneChannelInt is an implementation of 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 taken care of by Any2OneChannelInt -- 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 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.

A factory pattern is used to create channel instances. The create methods of Channel allow creation of channels, arrays of channels and channels with varying semantics such as buffering with a user-defined capacity or overwriting with various policies. 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.

Author:
P.D.Austin and P.H.Welch
See Also:
Alternative, One2OneChannelInt, One2AnyChannelInt, Any2AnyChannelInt, ChannelDataStoreInt

Method Summary
 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.


CSP for Java
(JCSP) 1.1-rc1

Submit a bug or feature to jcsp-team@kent.ac.uk
Version 1.1-rc1 of the JCSP API Specification (Copyright 1997-2007 P.D.Austin and P.H.Welch - All Rights Reserved)
Java is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.