Reactor和Proactor本质区别在哪?

发布于 2022-09-01 12:44:43 字数 270 浏览 18 评论 0

我理解的是Proactor不需要用户去调用阻塞读/写函数,比如read/write。
网络库会自动把它读到buffer里面,用户只需要去取buffer就可以了。

IO是同步和异步是他们之间差别的关键,请问我理解的是对的吗?

如果对的话?那么为什么很多人说libevent是Reactor,libevent明明是会把socket数据读到buffer中,当buffer到达一定水位的时候才调用用户的callback。这也是异步啊。

Thanks in advance !

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

許願樹丅啲祈禱 2022-09-08 12:44:43

libevent的代码没有看过,我的理解,libevent是用IO多路复用接口来做监听事件的;那么使用epoll监听事件就是一个等待的过程,有事件来了之后再“做出反应”,做出的反应动作是在用户空间调用读数据操作,读完之后调用回调函数处理;这个读的过程是在用户空间中调用处理的,耗费的是用户空间的时间,并阻塞着;
而Proactor的IO是系统级实现,是在内核中完成,读的过程中,用户空间的函数可以继续处理,并没有阻塞;读完之后调用相应用户回调函数处理;

希望这篇文章对你有帮助:
http://segmentfault.com/a/1190000002715832

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文