面向Actor的分布式并发库,适用于Ocaml和其他编程语言

16

问题

有没有人能推荐一个针对Ocaml的库,可以提供用于分布式计算的基于actor模型的并发

注意这里是“基于actor模型”和“分布式”,我想要使用基于actor模型的方式,并且希望无缝处理分布式actor,不想编写协议来与它们交互。这个库最好还应该提供标准的模式,如监管树等。


动机

我喜欢Erlang的并发模型和透明地处理分布式和本地进程的能力。但是,我认为Erlang的语法相当受限,希望有一种更具表现力的语言。我正在考虑从Erlang转移到Scala或Ocaml。

我知道Scala有Akka库,似乎提供了Erlang并发模型的漂亮的Scala版本。我想看看Ocaml方面有什么可用的。


附注

我也很愿意听到其他语言(特别是C ++,Haskell,Python和Ruby)的基于actor模型的并发库。


4
如果使用的编程语言还不支持多线程,那么使用一个Actor库有什么作用呢? - Kim Stebel
2
有多个实现。 - ygrek
5
多线程编程并非分布式计算的先决条件。实际上,你可以在没有SMP的情况下使用Erlang。 - Matthias Benkard
2
Erlang 在语言层面上对 actor 有支持,这是很难比较的。 - Kim Stebel
5
具体来说,Inria的OCaml支持多线程。但你可能指的是SMP - 这里有OC4MC。如预期的那样,线性性能会受到影响。 - ygrek
显示剩余7条评论
5个回答

11

虽然它可能不是Erlang使用的确切模型,但您可能想看一下JoCaml,它基于联接演算。


看起来很有趣!你知道这个东西有多受欢迎/使用/支持吗?我宁愿不使用那些在一年内就会失去支持的活跃开发工具。 - MGwynne
1
我对采用情况不确定。一个数据点:邮件列表档案几乎是空的。此外,在某个时候,开发停滞了一段时间(我相信是2003-2007)。另一方面,JoCaml已经存在了很多年。我不会期望有太多API不稳定性。 - Matthias Benkard

5
您可以看一下 parvel -- 这是一款针对ocaml的消息传递库/框架。它目前还不完整,但已经包含了用于编写actor程序的一些基本功能。

3

我正在考虑从Erlang转向Scala或Ocaml。

你可以考虑使用scalang,它允许你用Scala编程,但使用Erlang的actors。

最近我在Strange Loop会议上看到@moonpolysoft(Cliff Moon)关于该语言的演讲。Cliff Moon在https://boundary.com/为其开发并于今年早些时候开源了它。


2
你可能会花很多时间阅读以下内容:
Scala和F#有Akka和MailboxProcessor,它们正在生产应用程序中使用(注意:Scala actors和akka非常依赖于Hotspot;我不确定MailboxProcessor是否可以在MONO下使用)
Haskell有用户空间线程和至少1个actor实现,我对此了解不多
对于ML和OCaml,一些可能不广泛使用的库:poly/MLoc4mc 以及Netmulticore

1
尽管这是一个非常古老的问题,但自提出该问题以来,情况已经发生了变化。C++具有相当强大的演员模型实现,并且还提供了OP要求的分布式计算功能。主页位于http://actor-framework.org/
此外,它还可以利用OpenCL进行高性能计算,其模块位于其中一个存储库中的github上。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接