1. 程式人生 > >【轉】Leader-Follower執行緒模型

【轉】Leader-Follower執行緒模型

上圖就是L/F多執行緒模型的狀態變遷圖,共6個關鍵點:

(1)執行緒有3種狀態:領導leading,處理processing,追隨following

(2)假設共N個執行緒,其中只有1個leading執行緒(等待任務),x個processing執行緒(處理),餘下有N-1-x個following執行緒(空閒)

(3)有一把鎖,誰搶到就是leading

(4)事件/任務來到時,leading執行緒會對其進行處理,從而轉化為processing狀態,處理完成之後,又轉變為following

(5)丟失leading後,following會嘗試搶鎖,搶到則變為leading,否則保持following

(6)following不幹事,就是搶鎖,力圖成為leading

 

優點:不需要訊息佇列

 

適用場景:執行緒能夠很快的完成工作任務

 

有人說“併發量大時,L/F的鎖容易成為系統瓶頸,需要引入一個訊息佇列解決。”

 

此觀點不對,一個訊息佇列,其仍是臨界資源,仍需要一把鎖來保證互斥,只是鎖競爭從leading移到了訊息佇列上,此時訊息佇列僅僅只能起到訊息緩衝的作用。

 

根本解決方案是降低鎖粒度(例如多個佇列)。