我发现还有一个Akka的actor模型,所以我想知道Akka的Actor和Scala的Actor模型有什么区别?
发布于 2012-02-20 19:34:07
没有,只有一个角色模型,Akka角色和Scala角色是该模型的两个实现。
所有Actor模型都说你的并发原语是Actor,这可以:
create
并提供一定的保证,例如:
发送的顺序到达
在这一层面上,Scala和Akka角色之间没有区别。
有关它们可以执行的操作的差异,请参阅Different Scala Actor Implementations Overview。对我来说,最大的问题是Akka支持supervisors和ActorRegistry。
发布于 2012-09-07 14:19:24
也有一个历史的答案。Scala的创建者认为应该有一个参与者框架。Jonas Bonér尝试了一下,但并不完全满意,所以他开始研究一种新的--它演变成了Akka。然而,Scala的人认为它比他们自己的更好-所以在Jfokus 2011上,他们宣布Akka将成为Scala的标准参与者框架。但是,迁移需要一些时间。
发布于 2012-09-07 14:14:36
这有点取决于你对“模型”的理解--你既可以指“执行模型”,也可以指“编程模型”(也许还有其他模型)。
对于执行模型,基本上有两种:基于线程或基于事件。Scala标准执行元库同时包含了这两个库。基于线程的为每个参与者使用一个线程,而基于事件的使用一个线程池。前者更直观,后者更高效。Akka建立在基于事件的模型之上。
在编程模型上,scala标准库和Akka有很大的不同。因此,编程模型遵循“线程隐喻”。然而,在Akka中,编程的比喻是实现一些生命周期方法--但是“运行”-method是在框架内部编写的。事实证明,这种编程模型在基于事件的执行模型中也能更好地工作。
如果你对scala标准参与者的不同执行模型和编程模型感兴趣,我已经在这个问题上写了a few posts。
https://stackoverflow.com/questions/9358408
复制相似问题