1分鐘了解Leader-Follower線程模型
先給大家看一個圖

上圖就是L/F多線程模型的狀態變遷圖,共6個關鍵點:
(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移到了消息隊列上,此時消息隊列僅僅只能起到消息緩沖的作用。
根本解決方案是降低鎖粒度(例如多個隊列)。
F-L線程模型,可以考慮使用喲?
【本文為51CTO專欄作者“58沈劍”原創稿件,轉載請聯系原作者】