【问题标题】:Is Communicating Sequential Processes [CSP] an alternative to the actor model in Scala?通信顺序过程 [CSP] 是 Scala 中参与者模型的替代方案吗?
【发布时间】:2013-12-08 21:39:22
【问题描述】:

1978 Paper by Hoare we have an idea called Communicating Sequential Processes 中。这由 GoOccam 和 Clojure 中的 core.async 使用。

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

编辑 - 我还看到 Communicating Scala Objects 作为 Scala 中 JCSP 的替代品。但是这些似乎与真正的线程相关联 - 这似乎错过了 CSP 的好处之一,即摆脱保持大量线程始终处于活动状态的内存资源成本。

【问题讨论】:

标签: scala core.async actor-model


【解决方案1】:

您应该咨询this document,但总的来说还是有一些区别:

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

是的,如果这些差异在你的位置上是可以接受的,那么可以使用 CSP 作为 Actor 模型的替代方案。 我没有任何 JCSP 经验,但我不推荐使用那个特定的库(原因是我看到自 2011 年以来项目中没有任何活动)。

【讨论】:

  • 在 CSP 中,频道不是匿名的。 CSP 是一个过程代数,因此过程可以用变量或表达式来表示。 CSP 的实现可能有匿名进程。
  • @ArturoHernandez:谢谢澄清!
猜你喜欢
  • 1970-01-01
  • 2012-02-20
  • 2015-10-02
  • 1970-01-01
  • 2011-07-07
  • 2010-11-02
  • 1970-01-01
  • 2013-08-16
  • 1970-01-01
相关资源
最近更新 更多