我已經讀過一位阿卡人演員一個接一個地處理消息。爲什麼是這樣?爲什麼Akka Actor的默認行爲是一個接一個地處理消息?
什麼我無法包裹我的頭是「爲什麼是同步執行的消息的默認行爲?」。我明白,爲了並行執行郵箱消息,函數(要執行的工作)應該有0個副作用。
這是默認的akka行爲,因爲具有絕對獨立執行和0副作用的用例是MINORITY,我們通常使用需要公共資源的作業。
如果scala和函數式編程的設計目標是0副作用代碼,那麼爲什麼這不是akka actor消息處理中的默認行爲。
我已經讀過一位阿卡人演員一個接一個地處理消息。爲什麼是這樣?爲什麼Akka Actor的默認行爲是一個接一個地處理消息?
什麼我無法包裹我的頭是「爲什麼是同步執行的消息的默認行爲?」。我明白,爲了並行執行郵箱消息,函數(要執行的工作)應該有0個副作用。
這是默認的akka行爲,因爲具有絕對獨立執行和0副作用的用例是MINORITY,我們通常使用需要公共資源的作業。
如果scala和函數式編程的設計目標是0副作用代碼,那麼爲什麼這不是akka actor消息處理中的默認行爲。
我的理解是,演員模型的一個關鍵點是讓並行編程更易於理解(並且更簡單地「正確」),而不會出現諸如死鎖等難以調試的問題。
這樣做是因爲:
如果演員能夠並行處理多個郵件,它可以同時訪問自己的內部狀態,你會回不必擔心鎖,同步,ConcurrentModificationException
小號......這違背了點。
如果你看看Akka docs,你會發現兩個保證之一是每個發送者 - 接收者對的消息排序。如果消息以不確定的順序處理,則此擔保將受到損害。
我想一點是你想跨平臺不同的演員,但不是在一個特定的演員。 – marstran