这不仅仅两个山贼的故事!
先介绍下关系:
下面开始讲故事:
1、领导者/追随者模型:
故事:
- 话说一个地方有一群有组织无纪律的人从事山贼这个很有前途的职业。
- 一般就是有一个山贼在山路口察看,其他人在林子里面睡觉。
- 假如发现有落单的过往客商,望风的山贼就会弄醒一个睡觉的山贼,然后自己去打劫。
- 醒来的山贼接替作望风的事情。
- 打劫的山贼搞定以后,就会去睡觉,直到被其他望风的山贼叫醒来望风为止。
- 有时候过往客商太多,而山贼数量不够,有些客商就能侥幸平安通过山岭(所有山贼都去打劫其他客商了)。
- 有若干个线程(一般组成线程池)用来处理大量的事件
- 有一个线程作为领导者,等待事件的发生;其他的线程作为追随者,仅仅是睡眠。
- 假如有事件需要处理,领导者会从追随者中指定一个新的领导者,自己去处理事件。
- 唤醒的追随者作为新的领导者等待事件的发生。
- 处理事件的线程处理完毕以后,就会成为追随者的一员,直到被唤醒成为领导者。
- 假如需要处理的事件太多,而线程数量不够(能够动态创建线程处理另当别论),则有的事件可能会得不到处理。
故事:
- 话说一个地方有一群有组织无纪律的人从事山贼这个很有前途的职业。
- 他们有一个山贼头头,他专门负责望风,其他的喽罗待命。
- 假如发现有落单的过往客商,山贼头头会到路口拦路,让客商双手抱头蹲在地上,然后让一个小喽罗为这个倒霉鬼"服务"。
- 假如客商很多,山贼头头会让客商在地上蹲成一排(严肃点,排队啦,打劫啦)。 一群小喽罗挨个为大家"服务"。
- 头头的工作很重要,对于每个客商他都不会花费太多时间,拦路以后,他会让客商排队等待打劫。
- 过往客商太多而山贼数量不够,客商的排队可能需要等待较长的时间。
3、半同步/半反应堆
- 话说一个地方有一群有组织无纪律的人从事山贼这个很有前途的职业。
- 他们有一个山贼头头,他专门负责望风,其他的喽罗待命。
- 然而这群喽啰贪财如命,各个抢着“服务”客商,但是每人又只能最多“服务”一位。
- 假如山贼头头拦下客商,闲着的喽啰们就会抢着服务,然而每次只有一个喽啰抢到。
- 假如客商很多,山贼头头会让客商在地上蹲成一排(严肃点,排队啦,打劫啦)。 一群小喽罗挨个为大家"服务"。
- 头头的工作很重要,对于每个客商他都不会花费太多时间,拦路以后,他会让客商排队等待打劫。
- 过往客商太多而山贼数量不够,客商的排队可能需要等待较长的时间。