7.Reactor和Proactor的区别

本文介绍了系统I/O的四种类型,并重点讨论了Reactor和Proactor两种I/O多路复用模式。Reactor基于同步I/O,事件发生后由应用处理,而Proactor则依赖于异步非阻塞的系统调用,由操作系统完成实际的读写操作。Proactor模式通常提供更好的性能和伸缩性。
摘要由CSDN通过智能技术生成

系统I/O 可分为阻塞型, 非阻塞同步型、阻塞异步型以及非阻塞异步型。

阻塞型I/O意味着控制权只到调用操作结束了才会回到调用者手里。

同步非阻塞是会立即返回控制权给调用者的。调用者不需要等等,它从调用的函数获取两种结果:

要么此次调用成功进行了;

要么系统返回错误标识告诉调用者当前资源不可用,你再等等或者再试度看吧。

比如read()操作, 如果当前socket无数据可读,则立即返回EWOULBLOCK/EAGAIN,告诉调用read()者”数据还没准备好,你稍后再试”。

异步非阻塞调用中,稍有不同。调用函数在立即返回时,还告诉调用者,这次请求已经开始了。系统会使用另外的资源或者线程来完成这次调用操作,并在完成的时候知会调用者(比如通过回调函数)。POSIX的aio_read()来说,调用它之后,函数立即返回,操作系统在后台同时开始读操作。即是将工作交给了内核去完成这个操作

在以上三种IO形式中,非阻塞异步是性能最高、伸缩性最好的。

两种IO多路复用方案:Reactor and Proactor(基于同步和基于异步)

一般情况下,I/O 复用机制需要事件分享器(event demultiplexor)。 事件分享器的作用,即将那些读写事件源分发给各读写事件的处理者,</

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值