1.Reactor 模式是编写高性能网络服务器的必备技术之一,它具有如下的优点:
- 响应快,不必为单个同步时间所阻塞,虽然 Reactor 本身依然是同步的;
- 编程相对简单,可以最大程度的避免复杂的多线程及同步问题,并且避免了多线程/进程的切换开销;
- 可扩展性,可以方便的通过增加 Reactor 实例个数来充分利用 CPU 资源;
- 可复用性,reactor 框架本身与具体事件处理逻辑无关,具有很高的复用性;
2.模式框架必备组件:事件源、Reactor 框架、多路复用机制和事件处理程序
1) 事件源
- Linux 上是文件描述符,Windows 上就是 Socket 或者 Handle 了,这里统一称为“句柄集”;程序在指定的句柄上注册关心的事件,比如 I/O 事件。
2) event demultiplexer——事件多路分发机制
- 由操作系统提供的 I/O 多路复用机制,比如 select 和 epoll。程序首先将其关心的句柄(事件源)及其事件注册到 event demultiplexer 上;
- 当有事件到达时,event demultiplexer 会发出通知“在已经注册的句柄集中,一个或多个句柄的事件已经就绪”;
- 程序