1.1.4 网络编程:Reactor与Proactor的概念与应用

本文详细介绍了Reactor和Proactor这两种基于事件驱动的设计模式,重点讨论了它们在网络编程中的应用。Reactor模式用于同步I/O,而Proactor模式则用于异步I/O操作。文中详细阐述了两种模式的定义、结构、优缺点以及它们之间的区别。通过具体的事件处理流程和代码示例,解释了Reactor模式的单Reactor单线程模型、单Reactor多线程模型以及主从Reactor多线程模型。而Proactor模式则利用异步操作处理器来发起和处理异步操作。文章还提到了Linux下的epoll和Windows的IOCP作为实现这两种模式的机制。
摘要由CSDN通过智能技术生成

1、标准定义

在分布式系统尤其是服务器这一类事件驱动应用中,虽然这些请求最终会被序列化地处理,但是必须时刻准备着处理多个同时到来的服务请求。

在实际应用中,这些请求总是通过一个事件(如CONNECTOR、READ、WRITE等)来表示的。

在有 序地处理这些服务请求之前,应用程序必须先分离和调度这些同时到达的事件。为

了有效地解决这个问题,我们需要做到以下4方面: 

> 为了提高系统的可测量性和反应时间,应用程序不能长时间阻塞在某个事件源上而停止对其他事件的处理,这样会严重降低对客户端的响应度。 

> 为了提高吞吐量,任何没有必要的上下文切换、同步和CPU之间的数据移动都要避免。 

> 引进新的服务 或 改良已有的服务都要对既有的事件分离和调度机制带来尽可能小的影响。 

> 大量的应用程序代码需要隐藏在复杂的多线程和同步机制之后。

 

为了解决上述问题,基于事件驱动的模型广泛地应用于高性能服务器中。

Reactor 和 Proactor 是基于事件驱动,在网络编程中经常用到两种设计模式。

Reactor模式(中文称作“反应器” “反应堆”等等,称其为Reactor模式);

Proactor模式(中文也称“主动器” “前摄器”,称其为Proactor模式)。

其中Reacto

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北雨南萍

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值