半同步/半異步和領導者/追隨者 有趣的解釋

轉自:http://blog.csdn.net/jinchaoh/article/details/50427733

這不僅僅兩個山賊的故事!


先介紹下關係:




下面開始講故事:

1、領導者/追隨者模型:

故事:

  1. 話說一個地方有一羣有組織無紀律的人從事山賊這個很有前途的職業。
  2. 一般就是有一個山賊在山路口察看,其他人在林子裏面睡覺。
  3. 假如發現有落單的過往客商,望風的山賊就會弄醒一個睡覺的山賊,然後自己去打劫。
  4. 醒來的山賊接替作望風的事情。
  5. 打劫的山賊搞定以後,就會去睡覺,直到被其他望風的山賊叫醒來望風爲止。
  6. 有時候過往客商太多,而山賊數量不夠,有些客商就能僥倖平安通過山嶺(所有山賊都去打劫其他客商了)。
server:

  1. 有若干個線程(一般組成線程池)用來處理大量的事件
  2. 有一個線程作爲領導者,等待事件的發生;其他的線程作爲追隨者,僅僅是睡眠。
  3. 假如有事件需要處理,領導者會從追隨者中指定一個新的領導者,自己去處理事件。
  4. 喚醒的追隨者作爲新的領導者等待事件的發生。
  5. 處理事件的線程處理完畢以後,就會成爲追隨者的一員,直到被喚醒成爲領導者。
  6. 假如需要處理的事件太多,而線程數量不夠(能夠動態創建線程處理另當別論),則有的事件可能會得不到處理。
2、半同步/半異步

故事:

  1. 話說一個地方有一羣有組織無紀律的人從事山賊這個很有前途的職業。
  2. 他們有一個山賊頭頭,他專門負責望風,其他的嘍羅待命。
  3. 假如發現有落單的過往客商,山賊頭頭會到路口攔路,讓客商雙手抱頭蹲在地上,然後讓一個小嘍羅爲這個倒黴鬼"服務"。
  4. 假如客商很多,山賊頭頭會讓客商在地上蹲成一排(嚴肅點,排隊啦,打劫啦)。 一羣小嘍羅挨個爲大家"服務"。
  5. 頭頭的工作很重要,對於每個客商他都不會花費太多時間,攔路以後,他會讓客商排隊等待打劫。
  6. 過往客商太多而山賊數量不夠,客商的排隊可能需要等待較長的時間。

3、半同步/半反應堆

  1. 話說一個地方有一羣有組織無紀律的人從事山賊這個很有前途的職業。
  2. 他們有一個山賊頭頭,他專門負責望風,其他的嘍羅待命。
  3. 然而這羣嘍囉貪財如命,各個搶着“服務”客商,但是每人又只能最多“服務”一位。
  4. 假如山賊頭頭攔下客商,閒着的嘍囉們就會搶着服務,然而每次只有一個嘍囉搶到。
  5. 假如客商很多,山賊頭頭會讓客商在地上蹲成一排(嚴肅點,排隊啦,打劫啦)。 一羣小嘍羅挨個爲大家"服務"。
  6. 頭頭的工作很重要,對於每個客商他都不會花費太多時間,攔路以後,他會讓客商排隊等待打劫。
  7. 過往客商太多而山賊數量不夠,客商的排隊可能需要等待較長的時間。


發佈了20 篇原創文章 · 獲贊 20 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章