【reactor模型和proactor模型】

一、reactor模型和proactor模型区别

1. reactor模型 :基于事件驱动和非阻塞IO的并发模型,主要利用与I/O多路复用,将多个IO操作都放在epoll对象中,epoll_wait检测到有事件可读可写时,应用层主动进行对应事件的处理,准确来说 一个事件对应一个动作,根据不同的事件调用不同的回调函数。
2. proactor模型:基于异步IO的模型,操作系统负责完成IO操作,应用层序直接处理结果,真正实现了完全异步,不会阻塞线程(本质提交请求, 内核直接将结果给出来)。

二、 两者三个区别

特性ReactorProactor
I/O 模型非阻塞同步 I/O真正的异步 I/O
事件类型事件是否就绪(数据可读/可写)事件是否已完成(数据已读/已写)
I/O 操作应用程序主动发起 I/O 操作(需要等待IO操作完成)操作系统完成 I/O 操作(不需要等待io操作完成)

三、应用

  • Reactor 适用场景

    • 需要跨平台兼容性(尤其是 Linux/Unix)。
    • 非阻塞 I/O 支持良好(如网络库、Web 服务器)。
    • 开发者更熟悉同步编程模型。
  • Proactor 适用场景

    • 追求极致性能(如高频交易系统)。
    • 操作系统原生支持异步 I/O(如 Windows IOCP、Linux io_uring)。
    • 愿意处理复杂的异步回调逻辑。

四、问题1:为什么reactor是一种同步IO模型?

​ 主要是因为它的io操作都是应用程序主动发起IO操作的,但是和传统的同步io (会阻塞线程)不一样,它又依赖于非阻塞IO和io多路复用,可以高效处理多个并发IO操作

五、两者总结

  • Reactor:关注 I/O 就绪,开发者需手动执行非阻塞 I/O。
  • Proactor:关注 I/O 完成,操作系统自动完成 I/O,开发者处理结果。
    根据实际需求(平台、性能、复杂度)选择模式,现代高性能框架往往结合两者优势。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值