2
以下聲明是否正確,否則如何改進?阿卡演員的簡單解釋
當Akka actor發送消息時,作業被提交給執行者。 當有一個空閒線程時,它會調用獲取該演員的 鎖定的作業(假設它可以,否則就是另一個作業)。然後調用參與者的
receive
方法,一旦完成, 作業將被丟棄並且線程返回到池中。然後循環重複。 與併發線程相關的所有複雜的東西是由Akka處理的 ,釋放程序員專注於解決業務問題的 。
以下聲明是否正確,否則如何改進?阿卡演員的簡單解釋
當Akka actor發送消息時,作業被提交給執行者。 當有一個空閒線程時,它會調用獲取該演員的 鎖定的作業(假設它可以,否則就是另一個作業)。然後調用參與者的
receive
方法,一旦完成, 作業將被丟棄並且線程返回到池中。然後循環重複。 與併發線程相關的所有複雜的東西是由Akka處理的 ,釋放程序員專注於解決業務問題的 。
更準確的應該是:
當消息被髮送到一個演員,它被放置在該演員的隊列稱爲郵箱。同時,可能有成百上千的演員在他們的郵箱中有待處理的消息。 Akka使用有限數量的工作線程,選擇這些參與者的子集,並按照時間順序對來自郵箱的每條消息調用其方法
receive
。多個線程從不處理同一個actor。此外,Akka可能會決定中斷來自郵箱的郵件處理,並選擇不同的演員以保持公平並避免飢餓。因爲每個
receive
調用都需要一個線程,所以此方法不應該阻塞,等待或休眠。
這是一個具體實現的描述是Actors,Akka我假設。你應該修改它,並說明你的帖子的標題。如果這不是你的意圖,那麼你太過於關注所有Actor系統中不存在的實現細節。 –
假設阿卡:我不相信任何演員自己的鎖定是牽扯到的。每個參與者實例都有自己的「郵箱」(請求隊列 - 術語「作業」未被使用),並且排隊的消息一次傳遞給參與者。任何給定的actor實例一次不會處理多個請求。通常可以有任意數量的給定類型的角色,他們都獨立運作。 –
是的,我的意思是阿卡,我已經更新了這個問題。 –