[英]What's the difference of the Akka's Actor with Scala's Actor model
我發現還有一個Akka演員模型,所以我想知道Akka的演員和Scala的演員模特之間有什么區別?
好吧,沒有。 只有Actor模型,Akka actor和Scala actor是該模型的兩個實現 。
所有Actor模型都說你的並發原語是actor,它可以:
根據消息內容接收消息並決定下一步該做什么,包括:
向他們了解的任何演員發送消息
創造新的演員
並提供某些保證,例如:
任何演員一次只能處理一條消息
演員X發送給演員Y的消息將按照發送的順序到達
Scala和Akka演員在這個級別上沒有區別。
有關它們可以執行的操作的差異 ,請參閱不同的Scala Actor實現概述 。 對我來說最大的一點就是Akka支持主管和ActorRegistry。
還有一個歷史答案。 Scala的創建者認為應該有一個actor框架。 JonasBonér試了一下,但並不完全滿意,所以他開始研究一種新的 - 它演變成了Akka。 然而,Scala人認為它比他們自己更好 - 所以在Jfokus 2011他們宣布Akka將成為Scala的標准演員框架。 但是,遷移需要一些時間。
這取決於你對“模型”的意思 - 你可以參考“執行模型”或“編程模型”(也可能是其他模型)。
對於執行模型,基本上有兩種:基於線程或基於事件。 Scala標准actor庫包含兩者。 基於線程為每個actor使用一個線程,而基於事件的線程使用線程池。 前者更直觀易懂,后者更有效率。 Akka建立在基於事件的模型之上。
對於編程模型,scala標准庫和Akka之間存在很大差異。 在scala標准庫中,您基本上實現了“run”方法 - 如果您想等待傳入消息,您將進入等待狀態(通過調用“receive”或“react”)。 因此,編程模型遵循“線程隱喻”。 然而,在Akka中,編程隱喻是你實現了一些生命周期方法 - 但是“run”方法是在框架內部編寫的。 事實證明,這種編程模型也可以通過基於事件的執行模型更好地工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.