高并发模式
高并发模式的意义:对于IO密集型的操作,因为IO操作速度远远小于CPU的计算速度,所以,如果程序阻塞于IO操作将大量浪费CPU。但是如果多线程的情况下,被IO阻塞的线程可以放弃CPU(或操作系统调度),将执行权限转移给其他线程。高效率的使用CPU。
半同步/半异步模式
这里的同步模式是指程序按照代码序列的顺序执行,异步是指程序执行需要由系统事件来驱动
- 主线程只管理监听socket,连接socket由工作线程来管理,当有新的连接到来,主线程就将接受之并将新返回的连接socket派发给某个工作线程,此后,该连接socket上的任何I/O操作都由这个工作线程来完成,直至客户关闭连接,这在一定程度上节省了线程切换的开销。
- 主线程一般通过管道将连接socket派发给向工作线程。工作线程检测到管道上有可读时,就分析是否是一个新的客户连接请求到来,如果是,则把该新socket上的读写事件注册到自己的epoll内核事件表中。
领导者/追随者模式
领导者追随者模式是多个线程轮流获得事件资源的集合,轮流监听,分发和处理事件的一种模式.同一时间只有一个领导者线程,其他都是追随者.当IO事件发生以后,领导者选出下一个领导者从追随者中,然后自己处理IO 事件。新选出的领导者监听IO 事件。
例子:
1.有若干个线程(一般组成线程池)用来处理大量的事件
2.有一个线程作为领导者,等待事件的发生;其他的线程作为追随者,仅仅是睡眠。
3.假如有事件需要处理,领导者会从追随者中指定一个新的领导者,自己去处理事件。
4.唤醒的追随者作为新的领导者等待事件的发生。
5.处理事件的线程处理完毕以后,就会成为追随者的一员,直到被唤醒成为领导者。
6.假如需要处理的事件太多,而线程数量不够(能够动态创建线程处理另当别论),则有的事件可能会得不到处理。