Reactor 和 Proactor 区别
Reactor 和 Proactor 区别
同步异步、阻塞非阻塞组合
同步
以
read()
函数为例,int n = read(fd, buf. sz)
- 当采用
同步
的方式和阻塞io
的方式时,buf
就是从内核拷贝的数据,函数返回则可以马上知道buf
中的数据。 - 当采用
同步
的方式和非阻塞io
的方式,并且此时io
未就绪,此时n = -1
即返回结果为-1
,并且会通过error_number的返回值可以查看为什么没有得到数据。 - 当采用
同步
的方式和非阻塞io
的方式,并且此时io
就绪,那么此时跟阻塞io
是同样的结果,当io
函数返回时,可以获取从内核当中拷贝的数据即buf
中的数据。
总结:由此可以看到采用同步的方式可以马上获知io
操作的结果。
异步:
以
read()
函数为例,int n = read(fd, buf. sz)
- 当采用
异步
的方方式时,发起函数调用请求
以后,用户态
的线程会可以去做其他的事情。不管io
现在处于非阻塞
还是阻塞
的状态,内核会进行io检测
是否就绪,就绪后就会在内核
当中操作,将数据拷贝拷贝到buf中,再来通知用户层,数据io操作
已经完成,之后就可以去处理相应的业务逻辑。
总结:io 函数调用后,不能获知 io 的操作结果, 此时 io 操作都由内核完成
本质区别
io 操作不同;reactor 中检测 io 是否就绪,然后操作 io; proactor 投递请求,所有 io 操作由内核完成 。
充电站
推荐一个零声学院免费公开课程,个人觉得老师讲得不错,分享给大家:Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等技术内容,立即学习
Reactor 和 Proactor 区别相关推荐
- IO:Reactor和Proactor的区别
系统I/O 可分为阻塞型, 非阻塞同步型.阻塞异步型以及非阻塞异步型. 阻塞型I/O意味着控制权只到调用操作结束了才会回到调用者手里. 同步非阻塞是会立即返回控制权给调用者的.调用者不需要等等,它从调 ...
- Reactor与Proactor的区别
1.标准定义 两种I/O多路复用模式:Reactor和Proactor 一般地,I/O多路复用机制都依赖于一个事件多路分离器(Event Demultiplexer).分离器对象可将来自事件源的I/O ...
- IO设计模式:Reactor和Proactor对比
IO设计模式:Reactor和Proactor对比 平时接触的开源产品如Redis.ACE,事件模型都使用的Reactor模式:而同样做事件处理的Proactor,由于操作系统的原因,相关的开源产品也 ...
- 同步和异步, 阻塞和非阻塞, Reactor和Proactor
http://www.artima.com/articles/io_design_patterns.html http://note.sdo.com/u/1434409594/n/lvRFW~kjR2 ...
- 2种IO并发开发中的设计模式:Reactor and Proactor
Reactor and Proactor [原文:http://blog.csdn.net/wenbingoon/article/details/9880365] 1 概述 IO读写时,多路复用机制都 ...
- I/O模型系列之四:两种高性能IO设计模式 Reactor 和 Proactor
不同的操作系统实现的io策略可能不一样,即使是同一个操作系统也可能存在多重io策略,常见如linux上的select,poll,epoll,面对这么多不同类型的io接口,这里需要一层抽象api来完成, ...
- 高性能IO设计的Reactor和Proactor模式(转)
在高性能的I/O设计中,有两个比较著名的模式Reactor和Proactor模式,其中Reactor模式用于同步I/O,而Proactor运用于异步I/O操作. 在比较这两个模式之前,我们首先的搞明白 ...
- Reactor和Proactor对比以及优缺点 (netty的底层原理reactor模型)
IO设计模式:Reactor和Proactor对比 时接触的开源产品如Redis.ACE,事件模型都使用的Reactor模式:而同样做事件处理的Proactor,由于操作系统的原因,相关的开源产品也少 ...
- 带你彻底搞懂高性能网络模式Reactor 和 Proactor
摘要:无论是 Reactor,还是 Proactor,都是一种基于「事件分发」的网络编程模式,区别在于 Reactor 模式是基于「待完成」的 I/O 事件,而 Proactor 模式则是基于 ...
最新文章
- ARP(Accounting Resource Planning)项目感想
- php 动态切换数据库,thinkphp多数据库动态切换
- VirtualBox中的Linux读取Windows共享目录
- 大剑无锋之UNION 和 UNION ALL (SQL)【面试推荐】
- 含有运算符的STRING得到计算结果,类似JS的EVAL
- Oracle 20c 新特性知多少?ANSI SQL 全支持之 EXCEPT 运算符增强
- Linux 命令(62)—— ar 命令
- 黑马程序员C++学习笔记(第二阶段核心:面向对象)(二)
- 机械设计与制造专业学习嵌入式单片机开发容易吗?
- CSDN-怎么设置被粉丝关注之后的自动回复
- 2017年全国大学生电子设计竞赛综合测评题目解析——2022更新(方波生成,方波分频,三角波,加法器,滤波器,正弦波))
- java方法可选参数_Java可选参数
- 【黑马程序员pink老师前端】HTML综合案例(二)
- 使用Nexus添加jar包到私服里
- iPhone开发秘籍(一)--第一章 iPhone SDK简介
- csu1335 高桥与低桥
- BZOJ4399魔法少女LJJ——线段树合并+并查集
- oracle查询视图时慢,oracle视图查询速度慢
- 优信拍集团php面试题_【优信拍PHP面试】一次不错的面试体验,面试官根据实际出发提问。-看准网...
- C语言函数没有return时会返回什么