多线程处理的几种模式—Proactor和Reactor
来源:互联网 发布:linux系统密码破解 编辑:程序博客网 时间:2024/05/02 01:31
Proactor和Reactor都是并发编程中的设计模式。他们都是用于派发/分离IO操作事件的。所谓的IO事件也就是诸如read/write的IO操作。"派发/分离"就是将单独的IO事件通知到上层模块。两个模式不同的地方在于,Proactor用于异步IO,而Reactor用于同步IO。
Two patterns that involve event demultiplexors are called Reactor and Proactor。The Reactor patterns involve synchronous I/O, whereas the Proactor pattern involves asynchronous I/O.
Reactor:
1 事件句柄注册自己感兴趣的io事件
2 多路事件分发器等待io事件
3 io事件到来并唤醒多路事件分发器,多路器调用应用事件句柄
4 事件句柄进行实际读操作,处理读操作,重新声明感兴趣的io操作,并将控制权返回给多路分发器
为了提高处理速度,也可以提供多线程并发处理
Proactor :
1 事件句柄初始化一个异步读操作,此时该句柄并不在意异步操作结果,而是要获得完成事件而注册
2 事件多路器等待直到io事件完成
3 当事件多路器等待io事件时,操作系统在一个并行的内核线程上处理读操作,并将数据放到一个用户定义的缓冲中,并通知事件多路器操作完成。
4 事件多路器调用事件句柄
5 事件句柄从用户定义缓冲中获得用户数据并操作,然后开始新的异步操作并将控释返回事件多路器
可以看出,两个模式的相同点,都是对某个IO事件的事件通知(即告诉某个模块,这个IO操作可以进行或已经完成)。在结构上,两者也有相同点:demultiplexor负责提交IO操作(异步)、查询设备是否可操作(同步),然后当条件满足时,就回调handler。
不同点在于,异步情况下(Proactor),当回调handler时,表示IO操作已经完成;同步情况下(Reactor),回调handler时,表示IO设备可以进行某个操作(can read or can write),handler这个时候开始提交操作。
http://blog.sina.com.cn/s/blog_3f0cd39a0100ly23.html
- 多线程处理的几种模式—Proactor和Reactor
- reactor/proactor两种高效的事件处理模式和并发模式
- 两种高效的事件处理模型:Reactor模式和Proactor模式
- Proactor和Reactor模式
- Proactor和Reactor模式
- reactor和proactor模式
- Reactor和Proactor模式
- reactor和proactor模式
- Reactor 和 Proactor 模式
- Proactor和Reactor模式
- reactor和proactor模式
- Reactor和Proactor模式
- reactor和proactor模式
- Reactor和Proactor模式
- reactor和proactor模式
- reactor和proactor模式
- reactor和proactor模式
- Reactor和Proactor模式
- 【BZOJ 2844】 albus就是要第一个出场|线性基
- 华为招聘练习--小明的筷子
- Reactor模型 三种模型 演变
- iOS 图片模糊处理和自动获取图片尺寸
- Rxjava原理探索:切换线程,变换
- 多线程处理的几种模式—Proactor和Reactor
- 一行命令获取当前JVM所有可设置的参数以及当前默认值
- 垃圾收集器Serial 、Parallel、CMS、G1
- 做一个合格的程序猿之浅析Spring AOP源码(十七) Spring AOP开发大作战
- iOS开发 ☞ UITableView详解(一)
- JVM垃圾回收算法 总结及汇总
- 【原创】k8s源码分析----apiserver之APIGroupVersion
- Java垃圾回收调优
- 关于整数和真分数的四则运算的算法,整数已通过,但真分数不能化到最简的问题求大神指导啊