转自/lmh12506/article/details/8243044
领导者-追随者模型介绍
这几天翻了些文章,发现对领导者/追随者模型说的比较少,下面就这个模型打个比方:
1.话说一个地方有一群有组织无纪律的人从事山贼这个很有前途的职业。
2.一般就是有一个山贼在山路口察看,其他人在林子里面睡觉。
3.假如发现有落单的过往客商,望风的山贼就会弄醒一个睡觉的山贼,然后自己去打劫。
4.醒来的山贼接替作望风的事情。
5.打劫的山贼搞定以后,就会去睡觉,直到被其他望风的山贼叫醒来望风为止。
6.有时候过往客商太多,而山贼数量不够,有些客商就能侥幸平安通过山岭(所有山贼都去打劫其他客商了)。
下面是这个模式的计算机版本:
1.有若干个线程(一般组成线程池)用来处理大量的事件
2.有一个线程作为领导者,等待事件的发生;其他的线程作为追随者,仅仅是睡眠。
3.假如有事件需要处理,领导者会从追随者中指定一个新的领导者,自己去处理事件。
4.唤醒的追随者作为新的领导者等待事件的发生。
5.处理事件的线程处理完毕以后,就会成为追随者的一员,直到被唤醒成为领导者。
6.假如需要处理的事件太多,而线程数量不够(能够动态创建线程处理另当别论),则有的事件可能会得不到处理。
这个模型其实并不难于理解,但是我想假如是中国人给起的名字的话,也许会叫作 “皇帝轮流做,今年到我家” 模型更加贴切,因为领导者追随者之间是一种平等的关系。这不符合大部分人对于”领导者-追随者”的通常意义的理解。