reactor与proactor的理解
2016-01-14 10:44
393 查看
结合asio和libevent,对reactor和proactor的理解。
1.boost.asio模型的理解
asio是一个异步模型的网络库,当然也支持同步模型。
在TCP异步模型编程中,重要的组件有Acceptor和Socket,当然还有最重要的io_service。
可以先将io_service理解为一个黑盒子,它能够帮我们做很多事情。
Acceptor和Socket依赖io_service,辅助做一些事情。
Acceptor能够接收一个连接,该连接由一个新的Socket代表
Socket能够接收和发送数据
Acceptor和Socket是异步
Acceptor的连接功能,它只是告诉io_service,连接来了就调用下我注册的回调函数就ok了。
Socket的接收和发送功能,它也只是告诉io_servcie,发送(接收)万数据,你告诉下我的注册的回调函数就ok了。
看图说话
Acceptor在1的时候将socket和accept_handle注册到io_service,当有连接的时候调用acceptr_handle
Socket发送(接收)数据,通过2注册回调函数,完成发送(接收)数据会调用回调函数
2.reactor和proactor模型
我的理解:
定义
服务器网络模型,用于提供高性能
使用了I/O多路复用技术,监测注册事件,当事件发生,通知感兴趣事件者的模型
相同点
都使用了I/O多路复用技术
都包含事件分离器和事件处理器
事件分离器,两个用途,1.检测“事件处理器”关注的事件。2.事件发生时,发送事件到正确的“事件处理器”。
事件处理器,一般指业务部分
不同点
reactor使用同步I/O,proactor使用异步I/O
reactor关注事件就绪,proactor关注事件完成
asio
io_service就是“事件分离器”(想想io_service需要调用run)
Acceptor和Socket都是事件的关注者,也就是“事件处理器”
如何方便理解
本质上就两个东西,分离器和处理器
处理器要么想读数据,要么想写数据
然后分离器可以帮助处理器来做这个事情
如何做的好,就是用来不同的模型
以上
1.boost.asio模型的理解
asio是一个异步模型的网络库,当然也支持同步模型。
在TCP异步模型编程中,重要的组件有Acceptor和Socket,当然还有最重要的io_service。
可以先将io_service理解为一个黑盒子,它能够帮我们做很多事情。
Acceptor和Socket依赖io_service,辅助做一些事情。
Acceptor能够接收一个连接,该连接由一个新的Socket代表
Socket能够接收和发送数据
Acceptor和Socket是异步
Acceptor的连接功能,它只是告诉io_service,连接来了就调用下我注册的回调函数就ok了。
Socket的接收和发送功能,它也只是告诉io_servcie,发送(接收)万数据,你告诉下我的注册的回调函数就ok了。
看图说话
Acceptor在1的时候将socket和accept_handle注册到io_service,当有连接的时候调用acceptr_handle
Socket发送(接收)数据,通过2注册回调函数,完成发送(接收)数据会调用回调函数
2.reactor和proactor模型
我的理解:
定义
服务器网络模型,用于提供高性能
使用了I/O多路复用技术,监测注册事件,当事件发生,通知感兴趣事件者的模型
相同点
都使用了I/O多路复用技术
都包含事件分离器和事件处理器
事件分离器,两个用途,1.检测“事件处理器”关注的事件。2.事件发生时,发送事件到正确的“事件处理器”。
事件处理器,一般指业务部分
不同点
reactor使用同步I/O,proactor使用异步I/O
reactor关注事件就绪,proactor关注事件完成
asio
io_service就是“事件分离器”(想想io_service需要调用run)
Acceptor和Socket都是事件的关注者,也就是“事件处理器”
如何方便理解
本质上就两个东西,分离器和处理器
处理器要么想读数据,要么想写数据
然后分离器可以帮助处理器来做这个事情
如何做的好,就是用来不同的模型
以上
相关文章推荐
- ReactJS修炼之路(二):组件的key
- 通往全栈工程师的捷径 —— React
- React入门第一弹——React的起源
- React with TypeScript 系列(三) --实战篇
- React
- 【React Native开发】React Native应用设备运行(Running)以及调试(Debugging)(3)
- MAC下安装React Native环境。
- [Redux] React Todo List Example (Toggling a Todo)
- [Redux] React Todo List Example (Adding a Todo)
- ReactJS+Compass+Gulp+RESTful多页应用组件化开发
- ReactJs + BootStrap + Pager 分页
- React 入门实例教程
- ionic & react-natice 安装tips
- 整理的react相关的一些学习地址,包括 react-router、redux、webpack、flux
- 【无源汇点上下界最大流】[SGU194]Reactor Cooling
- React-Native入门
- ReactNative之开发Mac环境配置
- [React Testing] Redux Reducers
- React Native ——实现一个简单的抓取github上的项目数据列表
- netty reactor线程模型分析