Erlang Actors、Scala Actors和理论概念“Actor”有什么区别?

11

据我所知,Actor模型是并发理论的一种。Erlang和Scala都实现了这个理论模型,但它们的实现都不完全符合Actor模型。

从计算机科学家的角度来看,在Erlang、Scala和Actor模型中,“Actor”的概念有哪些差异?


2
这可能对你有帮助 https://rocketeer.be/articles/concurrency-in-erlang-scala/ - Kumar Saurabh
4
如果你询问具体的差异会更有帮助。同时,“actors in paper”指的是什么?请解释一下。 - Adam Lindberg
抱歉我的表达有点混乱。我想要知道计算机科学术语之间的区别。 - huron
1
@KumarSaurabh:这是一篇很棒的文章,基本上描述了2006年的Erlang和Scala Actors。我认为它可以对Erlang 18.xAkka 2.4.x进行最新的比较。 - tuxdna
1
为了避免混淆,也许值得在提到Scala actors时明确谈论Akka actors,因为在v2.9之前有一个Scala Actors API,但在2.10中被弃用,改为使用Akka actors。请参见http://docs.scala-lang.org/overviews/core/actors.html中的“介绍”段落。 - djsecilla
2个回答

2
我认为最大的区别在于实现方式,不确定是否符合资格。Erlang有一些特点:
  • 进程不共享内存,因此一个进程中的错误不能直接溢出到另一个进程
  • 垃圾回收在单个进程上工作,没有全局VM锁定
这些对我来说是主要的区别,这就是为什么我认为Erlang的actor模型比其他系统(包括Scala)更优越的原因。
在更实际的方面,通常情况下,Scala的actor实现已经足够满足用例了。不过,在一些用例中(例如维护紧密的延迟要求,例如需要p99与p50具有相同的延迟),你唯一的选择是使用Erlang。

0

Erlang的“进程”有自己的堆栈,垃圾回收器针对Actor模型进行了优化,因为这非常符合虚拟机和语言设计的本质。但与Java不同的是,它缺少JIT。


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