| Actor Model And Process Calculi |
Article Index for Actor Model |
Articles about Actor Model And Process Calculi |
Website Links For Actor |
Information AboutActor Model And Process Calculi |
| CATEGORIES ABOUT ACTOR MODEL AND PROCESS CALCULI | |
| actor model | |
| process calculi | |
|
There are many similarities between the two approaches, but also several differences (some philosophical, some technical):
The publications on the Actor model and on the process calculi have a fair number of cross references, acknowledgments, and citations (see Actor Model And Process Calculi History ). Sometimes there are researchers who work in one of these communities who are unaware of research in the other community. This is unfortunate. HOW DO CHANNELS WORK? Indirect communication using channels (''e.g.'' Gilles Kahn and David MacQueen {Link without Title} ) has been an important issue for communication in parallel and concurrent computation affecting both semantics and performance. Some process calculi differ from the Actor model in their use of channels as opposed to direct communication. ISSUES WITH SYNCHRONOUS CHANNELS Synchronous channels have the property that a sender putting a message in the channel must wait for a receiver to get the message out of the channel before the sender can proceed. Simple synchronous channels A synchronous channel can be modeled by an Actor that receives put and get communications. The following is the behavior of an Actor for a simple synchronous channel:
Synchronous channels in process calculi However, simple synchronous channels do not suffice for process calculi such as Communicating Sequential Processes (CSP) 1978 and 1985 because use of the ''guarded choice'' (after Dijkstra) command (called the ''alternative'' comannd in CSP). In a guarded choice command multiple offers (called guards) can be made concurrently on multiple channels to put and get messages; however at most one of the guards can be chosen for each execution of the guarded choice command. Because only one guard can be chosen, a guarded choice command in general effectively requires a kind of Two-phase Commit Protocol or perhaps even a Three-phase Commit Protocol if Time-outs are allowed in guards (as in Occam 3 [1992]). Consider the following program written in CSP 1978 : | ||
|   | "guard" class="copylinks" target="_blank">&nbsp&rarr&nbsp Z!go() Zguard |
|
|   | "guard" class="copylinks" target="_blank">&nbsp&rarr&nbsp Z!go() Zguard |
|
|   | "]" class="copylinks" target="_blank">Bids2b &nbsp&rarr&nbsp process1!b |
|
|