boost::asio::io_service与ACE_Reactor均是应用了Reactor同步IO模型,下面通过类比对这两个库进行学习。
“Reactor模式是处理并发I/O比较常见的一种模式,中心思想就是,将所有要处理的I/O事件注册到一个中心I/O多路复用器上,同时主线程阻塞在多路复用器上;一旦有I/O事件到来或是准备就绪(区别在于多路复用器是边沿触发还是水平触发),多路复用器返回并将相应I/O事件分发到对应的处理器中。
这里有三个重要的组件:
- 多路复用器:由操作系统提供,在linux上一般是select, poll, epoll等系统调用。
- 事件分发器:将多路复用器中返回的就绪事件分到对应的处理函数中。
- 事件处理器:负责处理特定事件的处理函数。
因为这种模型经常使用,所有不少人对简单的系统调用做了一层封装,形成跨平台的事件处理库,比较典型的有:

本文介绍了Reactor模式在并发I/O处理中的应用,涉及关键组件如多路复用器、事件分发器和事件处理器。提到了boost::asio::io_service和ACE_Reactor作为跨平台的事件处理库,强调了ACE_Reactor能够处理非IO事件的特性。通过一个实例展示了如何使用boost::asio::io_service和boost::asio::deadline_timer实现定时任务,包括创建主线程、子线程和定时器,以及如何绑定和运行io_service。
最低0.47元/天 解锁文章
1204

被折叠的 条评论
为什么被折叠?



