[ i/o 模型 ] Reactor 事件处理模式流程
2017-07-28 13:50
375 查看
使用同步 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 中写入服务器客户请求的结果;
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 中写入服务器客户请求的结果;
相关文章推荐
- Java NIO 与 基于reactor设计模式的事件处理模型
- 两种高效的事件处理模型:Reactor模式和Proactor模式
- 两种高效的事件处理模型:Reactor模式和Proactor模式
- 【网络编程】服务端的I/O模型,事件处理模式,并发模式
- reactor&&proactor 两种高效的事件处理模式
- I/O事件处理模型之Reactor和Proactor
- 用ACE的Reactor模式实现网络通讯时,ACE内部用WSAEventSelect函数把网络事件与一个事件对象关联起来,目的是为了后面用WaitForMultipleObjects函数统一处理。
- reactor/proactor两种高效的事件处理模式和并发模式
- I/O事件处理模型之Reactor和Proactor
- 服务端处理事件的两种模式--Reactor和Proactor
- I/O事件处理模型之Reactor和Proactor 【转】
- Linux服务器--服务器模型,I/O模型,两种高效的事件处理模式
- Android事件处理流程
- 基于管道化和事件驱动模型的Web请求处理(二)
- eventusermodel模式采用事件模型解析2007excel(解析大文件excel)
- nginx中事件模型中instance变量的处理细节
- C#事件处理流程
- cocoa touch事件处理流程--响应者链
- Android的事件处理模式
- [转载] C#异步编程模型2--基于事件的异步模式