适用条件:
多线程处理任务
过程:
- 有一个线程作为领导者,等待事件的发生;其他的线程作为追随者,仅仅是睡眠。
- 假如有事件需要处理,领导者会从追随者中指定一个新的领导者,自己去处理事件。
- 唤醒的追随者作为新的领导者等待事件的发生。
- 处理事件的线程处理完毕以后,就会成为追随者的一员,直到被唤醒成为领导者。
- 假如需要处理的事件太多,而线程数量不够(能够动态创建线程处理另当别论),则有的事件可能会得不到处理。
优点:
1)性能增加。
·增强了CPU高速缓存相似性并消除了动态内存分配和线程间共享的数据缓冲区要求。
·通过在线程间不交换数据的方法来使加锁开销达到最小,因此降低了线程同步化。
·可能将优先级逆序的数量减少到最小,因为服务器中没有进行其他排队。
·不需要语境切换以处理每个事件,减少了事件分配延时。
2)编程简单性。领导者/追随者模式简化了并发模型的编程,其中多线程可以使用共享句柄集接收请求,处理响应并多路分解连接。
不足:
1)实现复杂性。
2)缺乏灵活性。
3)网络I/O瓶颈。