我发现还有一个Akka的actor模型,所以我想知道Akka的Actor和Scala的Actor模型有什么区别?
发布于 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有很大的不同。在scala标准库中,您基本上实现了"run“方法--如果您想要等待传入的消息,您会让自己进入等待状态(通过调用"receive”或"react")。因此,编程模型遵循“线程隐喻”。然而,在Akka中,编程的比喻是实现一些生命周期方法--但是“运行”-method是在框架内部编写的。事实证明,这种编程模型在基于事件的执行模型中也能更好地工作。
https://stackoverflow.com/questions/9358408
复制相似问题