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

Synchronous Communication = Swap



Hi,
	
Synchronous communication is an essential concept with CSP.
In case of synchronous communication, two processes synchronise.
I.e., during a certain moment in time they are both engaged in
communication.

During such a moment of sync, the two Processes can in principle
EXCHANGE (BIDIRECTIONAL COMMUNICATION) data.  However, in Occam
and most other CSP-based languages/libraries, data is only TRANSFERED
(UNIDIRECTIONAL COMMUNICATION).

I think it would be much more natural to implement bidirectional
communication.

As a first approximation, I would expect:

	class SwapChannel
		(object) swap(object)

However, when implementing an Alt, people sometimes differentiate between
the input and the output side.  In order to be able to implement the Alt
efficiently, one needs to distinguish the INITATOR side from the OBSERVER
side.  The initiator-process cannot perform an Alt; the observer-process
can.

The result would be:

	class SwapChannel
		(object) initiate(object)
		(object) observe(object)

Note: the "swap" looks much more natural like a method call.
      I think this mail is an important step toward the union
      of OO and CSP.

Note: Claim: the "?" and "!" on top of core CSP are pretty much nonsense.
		
Gerald's Channel_of_ObjectObject has been inspired by my remarks.
(See CTJ 0.9 rev. 17)
He has not yet fully implemented my view.
     
What does the rest of this world think...

Cheers,
	Marcel