通信顺序进程[CSP]是Scala中actor模型的替代方案吗?

haw*_*eye 12 scala actor-model core.async

Hoare1978年论文中,我们有一个名为Communicating Sequential Processes的想法.这由Go,Occamcore.async中的Clojure 使用.

是否可以使用CSP替代Scala中的Actor模型?(我正在看JCSP,但我想知道这是否是唯一的选择,如果它是成熟的,如果有人使用它).

编辑 - 我也看到通信Scala对象作为Scala中JCSP的替代品.但是这些似乎与真正的线程相关 - 这似乎错过了CSP的一个好处,就是要远离保持大量线程始终处于活动状态的内存资源成本.

rle*_*ndi 2

您应该查阅此文档,但总的来说有一些区别:

  • 频道是匿名的,而演员是有身份的
  • 在CSP中,您使用通道来传输消息,但参与者可以直接相互联系。
  • 在 CSP 中,通信以会合的形式完成(即,它是同步的)。Actor 支持异步消息传递。

是的,如果您的立场可以接受这些差异,则可以使用 CSP 作为 Actor 模型的替代方案。我对 JCSP 没有任何经验,但我不建议使用该特定库(原因是我发现该项目自 2011 年以来没有任何活动)。