使用同步 I / O 模型(以 epoll_wait 为例)实现 Reactor 模式,工作流程如下:
1. 主线程往 epoll 内核事件表中注册 socket 上的读就绪事件;
2. 主线程调用 epoll_wait 等待 socket 上有数据可读;
3. 当 socket 上有数据可读时,epoll_wait 通知主线程。主线程则将 socket 可读事件放入请求队列;
4. 睡眠在请求队列中的某个工作进程被唤醒,它从 socket 读取数据,并处理客户请求,然后往 epoll 内核事件表中注册该 socket 上的写就绪事件;
5. 主线程调用 epoll_wait 等待 socket 可写;
6. 当 socket 可写时, epoll_wait 通知主线程,主线程则将 socket 可写事件放入请求队列;
7. 睡眠在请求队列中的某个工作线程被唤醒,它往 socket 中写入服务器客户请求的结果;
相关文章
- 【网络编程】服务端的I/O模型,事件处理模式,并发模式
- Java进阶(五)Java I/O模型从BIO到NIO和Reactor模式
- 两种高效的事件处理模型:Reactor模式和Proactor模式
- I/O模型之三:两种高性能 I/O 设计模式 Reactor 和 Proactor
- Linux服务器--服务器模型,I/O模型,两种高效的事件处理模式
- I/O事件处理模型之Reactor和Proactor
- I/O模型系列之四:两种高性能IO设计模式 Reactor 和 Proactor
- [ i/o 模型 ] Reactor 事件处理模式流程
- 一个I/O线程可以并发处理N个客户端连接和读写操作 I/O复用模型 基于Buf操作NIO可以读取任意位置的数据 Channel中读取数据到Buffer中或将数据 Buffer 中写入到 Channel 事件驱动消息通知观察者模式