Reactor-反应器模式

Reactor模式:反应器模式,是高性能网络服务器中最为常用的一种模式,libevent,muduo,libuv等网络库都是以

Reactor模式构建。Reactor模式由同步事件多路分解器和具体事件处理程序组成,同步事件多路分解器一般都是

由操作系统支持,如支持IO复用的select,epoll,poll等,通过监听IO事件集合,根据事件类型将具体事件交由具体

事件处理程序来处理,从而达到结构模块化的处理。总之Reactor是很多高性能网络架构的基础,需要我们开发者

重点学习。

下面是Reactor模式的类图:

以select作为同步事件多路分解器为例:

Reactor handle_events 使用select监听一组套接字,由Event Handler封装套接字和事件组。

 

场景、客户端套接字连接服务器,向服务器发送一条数据,并接受回显这条数据。 

1) 服务器调用register_handler注册accept的Listen套接字

2) 服务器调用handle_events进入事件循环

3) 调用select以处理客户端的登录连接请求

4) 客户端connect连接到服务器

5) 服务器select监听到客户端的连接事件到来,调用事件处理函数handle_event处理新连接的socket

6) 创建新的socket,并将socket Event handle register到 Reactor,并指定socket Event handle当有读事件发生时,通知它

7) 客户端发送一段字符串到服务器,同步事件多路分解器调用handle_events监听到有读事件到来,通知socket Event handle接受数据

8) 数据接受完成后,向socket Event handler register到 Reactor,并指定socket Event handle当有写事件发生时,通知它

9) 客户端调用recv函数回显接受数据

10)服务器同步事件多路分解器调用handle_events监听到有写事件到来,通知socket Event handle 发送之前接受到的数据。

11) 客户端收到数据显示

转载于:https://www.cnblogs.com/Forever-Kenlen-Ja/p/8441030.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值