作用
Reactor是一种事件处理模式,事件驱动应用程序使用Reactor架构来同步地等待一个或多个指示事件的发生,然后分离并分派一个或多个服务请求给事件处理程序中合适的钩子(回调)方法。
通过这种方式将事件分离分派机制与服务程序中与指示相关的具体处理机制分开。
结构
Reactor由5个部分组成。
- 句柄:指用于识别网络连接或文件打开的事件源,由操作系统提供,在linux中一般指文件描述符。
- 同步事件分离程序:一般指对一个函数(select, poll, epoll)的封装。用于等待句柄集发生一个或多个事件。在句柄集中没有事件发生时函数会被阻塞。
- 事件处理程序:用于指定一系列接口,代表了一系列可用操作(钩子方法,回调)的集合,用于处理发生于相关句柄上的事件。
- 具体事件处理程序:实现了应用程序提供的具体服务,每个具体事件处理程序与一个句柄相关联,实现了处理对应句柄的事件的钩子方法,这些事件通过相关联的句柄进行接收。
- 反