加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Reactor 和 Proactor 模式

发布时间:2020-12-15 04:56:05 所属栏目:百科 来源:网络整理
导读:http://name5566.com/4175.html 参考文献列表: http://www.artima.com/articles/io_design_patterns2.html 通常来说,I/O 多路复用机制(I/O multiplexing mechanisms)依赖于一个事件多路分用器(Event demultiplexor)。我们常见的事件多路分用器包括:Li

http://name5566.com/4175.html

参考文献列表:
http://www.artima.com/articles/io_design_patterns2.html

通常来说,I/O 多路复用机制(I/O multiplexing mechanisms)依赖于一个事件多路分用器(Event demultiplexor)。我们常见的事件多路分用器包括:Linux 的 EPOLL 和 Windows 的 IOCP(如果你使用过 IOCP 或者 EPOLL,那么会更加容易理解相关内容)。一个多路分用器分发 I/O 事件到特定的事件处理函数上。对于开发者来说,他只需要注册感兴趣的事件并且提供事件处理函数。事件多路分用器负责递交事件到事件处理函数上。和事件多路分用器相关的两个设计模式为 Proactor 和 Reactor。

Proactor 模式

Windows IOCP 使用 Proactor 模式。Proactor 模式使用异步 I/O。Proactor 的标准(典型)的工作方式是:

  1. Proactor 等待事件
  2. Proactor 读或写数据
  3. Proactor 分发 I/O 完成事件到用户事件处理函数
  4. 用户处理数据

Proactor 模式下,用户在调用异步 I/O 时会传递一个 Buffer 给系统,系统进行实际的 I/O 操作并从传递给系统的 Buffer 中获取或者放入数据。

Reactor 模式

Linux EPOLL 使用 Reactor 模式。Reactor 模式使用同步 I/O(一般来说)。Reactor 的标准(典型)的工作方式是:

  1. Reactor 等待事件
  2. Reactor 分发可读写事件到用户事件处理函数
  3. 用户读取数据
  4. 用户处理数据

与 Proactor 模式相比,Reactor 模式下,用户有责任在收到可读写事件后进行实际的 I/O 操作。

Proactor 模式和 Reactor 模式可以相互转换,详细可以参考:http://www.artima.com/articles/io_design_patterns2.html

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读