高并发模式
高并发模式意义:对于IO 密集型的程序,因为IO 的操作速度远远小于CPU 的计算速度, 所以 如果程序阻塞于IO操作将大量浪费CPU。 但如果是多线程情况下,被IO阻塞的线程可以放弃CPU(或操作系统调度),将执行权转移给其他线程。高效率的使用CPU。
半同步/半异步模式
这里的同步与异步模式与IO模式中的同步异步概念不同。 这里同步模式是指程序按照代码序列的顺序执行,异步是指程序的执行需要由系统事件来驱动。常见的系统调用包括中断, 信号等
例子
- 主进程只负责监听socket, 连接socket由工作线程来管理。当由新连接到来时,主线程就接受之并将新返回的连接socket 派发给(通过管道写)某个工作线程。
- 工作线程处理新连接socket 上的IO 请求, 直至客户端断开socket连接。当管道上有socket连接事件时,将socket 上的读写事件注册到自己的epoll内核事件表中。
主从事件都维持自己的事件循环,主线程监听socket 事件并分发socket给工作线程,工作线程监听socket 上的读写事件并处理这些事件。
领导者追随者模式
领导者追随者模式是多个线程轮流获得事件源集合,轮流监听,分发和处理事件的一种模式。同一时间 只有一个领导者线程,其他都是追随者线程。当IO 事件到达后,领导者选出下一个领导者从追随者中,然后自己处理IO 事件。新选出的领导者监听IO 事件。