1分鐘了解Leader-Follower線程模型

2018-09-06 18:05 更新

L/F多線程模型的狀態(tài)變遷圖

上圖就是L/F多線程模型的狀態(tài)變遷圖,共6個關(guān)鍵點:

(1)線程有3種狀態(tài):領(lǐng)導(dǎo)leading,處理processing,追隨following

(2)假設(shè)共N個線程,其中只有1個leading線程(等待任務(wù)),x個processing線程(處理),余下有N-1-x個following線程(空閑)

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

(4)事件/任務(wù)來到時,leading線程會對其進(jìn)行處理,從而轉(zhuǎn)化為processing狀態(tài),處理完成之后,又轉(zhuǎn)變?yōu)閒ollowing

(5)丟失leading后,following會嘗試搶鎖,搶到則變?yōu)閘eading,否則保持following

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


優(yōu)點:不需要消息隊列

適用場景:線程能夠很快的完成工作任務(wù)

有人說“并發(fā)量大時,L/F的鎖容易成為系統(tǒng)瓶頸,需要引入一個消息隊列解決?!?/p>
此觀點不對,一個消息隊列,其仍是臨界資源,仍需要一把鎖來保證互斥,只是鎖競爭從leading移到了消息隊列上,此時消息隊列僅僅只能起到消息緩沖的作用。

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

F-L線程模型,可以考慮使用喲?


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號