Actor模型的優缺點
優點:
至此,Actor模型就可以看出這種訊息機制的執行緒呼叫最大好處是非阻塞的,多個執行緒可以同時併發進行,無需等待被呼叫方法執行完成返回訊息的響應。當然,看到此處大家或許跟我一樣有一點困惑的地方,即萬一我們後面的程式需要立即使用它返回的響應訊息怎麼辦呢?其實這也算Actor存在的一點不足之處,需要我們在設計多執行緒前考慮你的程式到底適不適合這種機制,後面我們會再詳細描述。
缺點:
①、每個Actor雖然是獨立執行的,但是一旦同時接收到多個訊息,一次也僅能處理一條訊息,也就是按訊息佇列處理;
②、Actor間非同步執行,透過訊息的傳遞實現協同。所以一個Actor內部出現執行錯誤很可能造成整個程式的錯誤——比如一個或多個其他Actors可能一直等待它反饋的訊息。所以我們一定需要好好的處理Actors的例外事件,並且有容錯機制及時反饋錯誤資訊給其他等待中的Actors;
④、從上面的闡述我們也能窺探一二,並不是所有的應用開發都很好適合Actor模型。當且僅當我們可以將問題分為多個小模組,並且它們各自是獨立執行的,僅個別地方需要交流。如果多執行緒間需要頻繁互動,存在交叉的環境,其實Actor模型的效率優勢也就不復存在了,也就失去了其訊息呼叫並行執行的必要性。
Actor模型的優缺點
優點:
至此,Actor模型就可以看出這種訊息機制的執行緒呼叫最大好處是非阻塞的,多個執行緒可以同時併發進行,無需等待被呼叫方法執行完成返回訊息的響應。當然,看到此處大家或許跟我一樣有一點困惑的地方,即萬一我們後面的程式需要立即使用它返回的響應訊息怎麼辦呢?其實這也算Actor存在的一點不足之處,需要我們在設計多執行緒前考慮你的程式到底適不適合這種機制,後面我們會再詳細描述。
缺點:
①、每個Actor雖然是獨立執行的,但是一旦同時接收到多個訊息,一次也僅能處理一條訊息,也就是按訊息佇列處理;
②、Actor間非同步執行,透過訊息的傳遞實現協同。所以一個Actor內部出現執行錯誤很可能造成整個程式的錯誤——比如一個或多個其他Actors可能一直等待它反饋的訊息。所以我們一定需要好好的處理Actors的例外事件,並且有容錯機制及時反饋錯誤資訊給其他等待中的Actors;
④、從上面的闡述我們也能窺探一二,並不是所有的應用開發都很好適合Actor模型。當且僅當我們可以將問題分為多個小模組,並且它們各自是獨立執行的,僅個別地方需要交流。如果多執行緒間需要頻繁互動,存在交叉的環境,其實Actor模型的效率優勢也就不復存在了,也就失去了其訊息呼叫並行執行的必要性。