我发现还有一个Akka演员模型,所以我想知道Akka的演员和Scala的演员模特之间有什么区别?
好吧,没有 . 只有Actor模型,Akka actor和Scala actor是该模型的两个实现 .
所有Actor模型都说你的并发原语是actor,它可以:
根据消息内容收到消息并决定下一步该做什么,包括:
向他们了解的任何演员发送消息
创造新的演员
并提供某些保证,例如:
演员X发送给演员Y的
Scala和Akka演员在这个级别上没有区别 .
有关他们可以做什么的不同,请参阅Different Scala Actor Implementations Overview . 对我来说最大的一点就是Akka支持主管和ActorRegistry .
还有一个历史答案 . Scala的创建者认为应该有一个actor框架 . JonasBonér试了一下,但并不完全满意,所以他开始研究一种新的 - 它演变成了Akka . 然而,Scala人认为它比他们自己更好 - 所以在Jfokus 2011他们宣布Akka将成为Scala的标准演员框架 . 但是,迁移需要一些时间 .
这取决于你对“模型”的意思 - 你可以参考“执行模型”或“编程模型”(也可能是其他模型) .
对于执行模型,基本上有两种:基于线程或基于事件 . Scala标准actor库包含两者 . 基于线程为每个actor使用一个线程,而基于事件的线程使用线程池 . 前者更直观易懂,后者更有效率 . Akka Build 在基于事件的模型之上 .
对于编程模型,scala标准库和Akka之间存在很大差异 . 在scala标准库中,您基本上实现了“run”方法 - 如果您想等待传入消息,您将进入等待状态(通过调用“receive”或“react”) . 因此,编程模型遵循“线程隐喻” . 然而,在Akka中,编程隐喻是你实现了一些生命周期方法 - 但是“run”方法是在框架内部编写的 . 事实证明,这种编程模型也可以通过基于事件的执行模型更好地工作 .
如果您对scala标准actor的不同执行模型和编程模型感兴趣,我已就此问题编写了a few posts .
3 回答
好吧,没有 . 只有Actor模型,Akka actor和Scala actor是该模型的两个实现 .
所有Actor模型都说你的并发原语是actor,它可以:
根据消息内容收到消息并决定下一步该做什么,包括:
向他们了解的任何演员发送消息
创造新的演员
并提供某些保证,例如:
演员X发送给演员Y的
Scala和Akka演员在这个级别上没有区别 .
有关他们可以做什么的不同,请参阅Different Scala Actor Implementations Overview . 对我来说最大的一点就是Akka支持主管和ActorRegistry .
还有一个历史答案 . Scala的创建者认为应该有一个actor框架 . JonasBonér试了一下,但并不完全满意,所以他开始研究一种新的 - 它演变成了Akka . 然而,Scala人认为它比他们自己更好 - 所以在Jfokus 2011他们宣布Akka将成为Scala的标准演员框架 . 但是,迁移需要一些时间 .
这取决于你对“模型”的意思 - 你可以参考“执行模型”或“编程模型”(也可能是其他模型) .
对于执行模型,基本上有两种:基于线程或基于事件 . Scala标准actor库包含两者 . 基于线程为每个actor使用一个线程,而基于事件的线程使用线程池 . 前者更直观易懂,后者更有效率 . Akka Build 在基于事件的模型之上 .
对于编程模型,scala标准库和Akka之间存在很大差异 . 在scala标准库中,您基本上实现了“run”方法 - 如果您想等待传入消息,您将进入等待状态(通过调用“receive”或“react”) . 因此,编程模型遵循“线程隐喻” . 然而,在Akka中,编程隐喻是你实现了一些生命周期方法 - 但是“run”方法是在框架内部编写的 . 事实证明,这种编程模型也可以通过基于事件的执行模型更好地工作 .
如果您对scala标准actor的不同执行模型和编程模型感兴趣,我已就此问题编写了a few posts .