天天看點

縱向擴充

利用多核最基本的機制就是并行

一、有四種類型的 Dispatcher

可以用于描述如何在 Actor

之間共享線程:

Dispatcher

:預設的 Dispatcher

類型。将會使用定義的 Executor

,在 Actor

中處

理消息。在大多數情況下,這種類型能夠提供最好的性能。

 PinnedDispatcher:給每 個 Actor 都配置設定自己獨有的線程。這種類型的 Dispatcher

為每個 Actor

都建立一個 ThreadPool Executor

,每個 Executor

中都包含一個線程。 如果希望確定每個 Actor

都能夠立即響應,那麼這似乎是個不錯的方法。不過 PinnedDispatcher

比其他共享資源的方法效率更高的情況其實并不多。可以在單 個 Actor

必須處理很多重要工作的時候試試這種類型的 Dispatcher

,否則的話不 推薦使用。

CallingThreadDispatcher

:這個 Dispatcher

比較特殊,它沒有 Executor

,而是在 發起調用的線程上執行工作。這種 Dispatcher

主要用于測試,特别是調試。由于 發起調用的線程負責完成工作,是以清楚地看到棧追蹤資訊,了解所執行方法的 完整上下文。這對于了解異常是非常有用的。每個 Actor

會擷取一個鎖,是以每 次隻有一個線程可以在 Actor

中執行代碼,而如果多個線程向一個 Actor

發送信 息的話,就會導緻除了擁有鎖的線程之外的所有線程處于等待狀态。本書前面介 紹過的 TestActorRef

就是基于 CallingThreadDispatcher

實作支援在測試中同步執 行工作的。