阿卡的演员和斯卡拉的演员模型有什么不同

我发现还有一个阿卡的演员模型,所以我想知道什么是阿卡的演员和斯卡拉的演员模型的区别?

15339 次浏览

没有,只有 Actor 模型 Akka 演员和 Scala 演员是这个模型的两个 实施

All Actor model says that your concurrency primitives are actors, which can:

  • receive a message and decide what to do next depending on the content of the message, including:

  • 给他们认识的演员发信息

  • 创造新的演员

并提供某些保证,例如:

  • 任何参与者一次只处理一条消息

  • 演员 X 向演员 Y 发送的消息将按照发送的顺序到达

在这个级别上,Scala 和 Akka 参与者之间没有区别。

有关它们所能做的不同之处,请参阅 不同的 Scala 角色实现概述。对我来说,最大的一个是 Akka 支持管理者和 ActorRegistry。

这在一定程度上取决于“模型”的含义——您可以引用“执行模型”或“编程模型”(也可以引用其他模型)。

对于执行模型,基本上有两种: 基于线程的或基于事件的。Scala 标准角色库包含了这两者。基于线程的对每个参与者使用一个线程,而基于事件的对象使用线程池。前者更容易理解,后者更有效率。Akka 是基于基于事件的模型构建的。

对于编程模型,scala 标准库和 Akka 有很大的不同。在 scala 标准库中,您基本上实现了“ run”方法——如果您希望等待传入消息,那么您将自己置于等待状态(通过调用“接收”或“反应”)。因此,编程模型遵循“线程隐喻”。然而,在 Akka 中,编程的比喻是您实现了一些生命周期方法,但是“ run”方法是在框架内编写的。事实证明,这种编程模型在基于事件的执行模型中也能更好地工作。

如果您对 scala 标准角色的不同执行模型和编程模型感兴趣,我已经就这个问题编写了 <一 href="http://de一rjunior.blogspot.se/2011/05/sc一l一-一ctor-w一iting-for-godot-vl一dimir.html" rel="noreferrer">一 很少 职位

还有一个历史性的答案。Scala 的创建者认为应该有一个 Actor 框架。乔纳斯 · 博内尔尝试了一下,但并不完全满意,所以他开始研究一种新的——进化成阿卡。然而,Scala 的人认为它比他们自己的更好——所以在2011年的 Jfokus 上,他们宣布 Akka 将成为 Scala 的标准参与者框架。然而,这种迁移需要一些时间。