26
$\begingroup$

I'm trying to wrap my head around what the real differences between the Actor Model of concurrency and Communicating Sequential Processes (CSP) model of concurrency.

So far the best that I have been able to come up with is that the Actor Model allows the number and layout of nodes to change while CSP has a fixed structure of nodes.

$\endgroup$
  • 1
    $\begingroup$ See also The Actor Model at ~14:45 on Channel 9, where Carl Hewitt discusses the Actor Model in some depth. He notes a difference between actors and CSP is the use of channels for communication in CSP versus direct communication in the Actor Model. $\endgroup$ – Whymarrh Jul 12 '15 at 17:02
18
$\begingroup$

I believe one core difference is that in CSP, processes synchronize when messages are received (i.e. a message cannot be sent from one process unless another process is in a receiving mode), while the Actor model is inherently asynchronous (i.e. messages are immediately sent to other processes' address, irrespective of whether they're actively waiting on a message or not).

There should be another answer that is more well-developed, however.

$\endgroup$
  • 1
    $\begingroup$ That's pretty much the answer I would have written. In the original actor model (Hewitt, Agha), the receiving process did not even automatically provide access to the name of the sender, though more modern realisations (such as Scala's actors) do. The other difference is that actors enable the sending of actor ids in the messages, as hinted in the question, whereas this is not possible in CSP. (Also possible in the pi-calculus, but not in CCS.) $\endgroup$ – Dave Clarke Aug 17 '10 at 18:30
  • $\begingroup$ So, basically, it's all about the mailbox? $\endgroup$ – Jörg W Mittag Sep 3 '10 at 22:29
  • $\begingroup$ What about the differences listed here: en.wikipedia.org/wiki/… and en.wikipedia.org/wiki/… ? Another important difference, for earlier versions of CSP, is unbounded nondeterminism (see those links). $\endgroup$ – Blaisorblade Sep 9 '10 at 3:24
  • 2
    $\begingroup$ I'm not sure if this the core difference, since CSP can have buffered channels allowing asynchronous message sending. Perhaps it's more about the process id, in CSP processes are anonymous, while actors are named. $\endgroup$ – CMCDragonkai Aug 17 '15 at 2:39

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.