高性能IO并发模型(Reactor/Proactor)

本文介绍了高性能IO并发模型中的Reactor和Proactor模型。Reactor模型在Linux服务器下用于同步IO,分为单Reactor单线程、单Reactor多线程(线程池)和主从Reactor多线程模型。Proactor模型则应用于Windows服务器的异步IO,特点是所有IO操作由系统异步执行。文章详细阐述了各模型的工作流程和优缺点。
摘要由CSDN通过智能技术生成

对于网络IO的模型中的IO多路复用编程一般用于编写demo调试程序,再工业级生产产品中针对多路复select,poll,select的基础上做一层封装,在学术上有专业的名字Reactor和Proactor,Reactor应用于Linux服务器下的同步IO,Proactor应用于windows服务器的异步IO

1 Reactor模型

普通函数调用流程如下:
程序调用函数---->函数执行----》程序等待—》结果和控制权返回----》程序继续

1.1 定义

reactor模型是一种事件驱动机制:
程序不主动调用某个api处理,而是相应的事件发生,reactor主动调用应用程序注册的接口进行处理。

1.2 思想

将所有要处理的IO事件注册到一个IO多路复用器上,同时主线程/进程在多路复用器上。一但有IO事件到来或者准备就绪,多路复用器返回并调用相应的事件处理函数。
在这里插入图片描述

1.3 三种reactor模型

a)单Reactor单线程模型
在这里插入图片描述
三个重要组件:
多路复用器(Reactor):负责监听注册进来的IO事件
事件分离器:将多路复用器中返回的就绪事件分到对应的处理函数中(dispatch)
事件处理器:负责处理特定事件的处理函数(对应图中read,decode,compute,encode,send等)

该模型中,reactor线程既要负责监听新连接的到来,又要dispatch请求到handler中。

消息处理流程如下:
1 reactor通过epoll监听连接事件,收到事件后通过dispatch转发
2 如果是连接建立事件,则有acceptor接收连接,并创建handler处理后续事件
3 如果不是建立连接事件,reactor会分发调用handler来响应
4 handler完成read—》业务处理—》send的完整业务流程。

简化版本的代码:

// reactor初始化 创建多路复用器
int reactor_init(struct reactor *r) {
   
    r->epfd = epoll_create</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

丰恒谷

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

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

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

打赏作者

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

抵扣说明:

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

余额充值