Reactor和Proactor模式

本文深入探讨了多线程编程中Reactor与Proactor两种模式的区别与实现过程,详细阐述了Reactor模式下读操作的同步处理方式及Proactor模式下读操作的异步处理流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[size=medium] 在阅读多线程编程模型相关资料的时候,看到这两个模式。这2个模式在大量的网络库中均有使用。
这里有一个其它人举的读操作的例子用来说明这个模式的操作过程
在Reactor中实现读:
- 注册读就绪事件和相应的事件处理器
- 事件分离器等待事件
- 事件到来,激活分离器,分离器调用事件对应的处理器。
- 事件处理器完成实际的读操作,处理读到的数据,注册新的事件,然后返还控制权。
Proactor的读过程:
- 处理器发起异步读操作(操作系统必须支持异步IO)。在这种情况下,处理器无视IO就绪事件,它关注的是完成事件。
- 事件分离器等待操作完成事件
- 在分离器等待过程中,操作系统利用并行的内核线程执行实际的读操作,并将结果数据存入用户自定义缓冲区,最后通知事件分离器读操作完成。
- 事件分离器呼唤处理器。
- 事件处理器处理用户自定义缓冲区中的数据,然后启动一个新的异步操作,并将控制权返回事件分离器。

这两个模式的主要区别是:
Reactor模式是同步的,由事件处理器来处理IO操作,而Proactor模式是异步的,IO操作由操作系统来完成,当IO操作完成后才会除非事件处理器来处理。
Reactor模式可以通过将IO操作交由事件分离器来处理从而模拟Proactor模式。[/size]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值