Reactor模式

15 篇文章 0 订阅
6 篇文章 0 订阅

1.Reactor的事件处理机制

首先来回顾一下普通函数的调用机制:程序调用某函数->函数执行,程序等待->函数将结果和控制权返回给程序->程序继续处理。
Reactor是事件驱动机制,和普通函数调用的不同之处在于:应用程序不是主动调用某个API完成处理,Reactor逆置了事件处理流程,应用程序需要提供相应的接口并注册到Reactor上。如果相应的事件发生,Reactor将主动调用应用程序注册接口(PS:又将这些接口称为回调函数)

2.Reactor模式的优点

Reactor应用于编写高性能网络服务器技术之一,优点如下:
1)响应快,不必为单个同步时间所阻塞,虽然Reactor本身依然是同步的
2)编辑相对简单,最大程度避免复杂的多线程和同步问题,并且避免了多线程、进程切换开销
3)可扩展性,可以方便的增加Reactor实例个数充分利用CPU资源
4)可复用性,Reactor本身与具体事件逻辑无关,具有很高的复用性

3.Reactor框架

先看看以下UML图:

1)Reactor反应器,是事件管理的接口,内部使用事件分发器(event demultiplexer)注册、注销事件,并允许事件循环,当有事件进入“就绪”状态时,调用注册事件的回调函数处理事件。
2)Event Demultiplexer事件多路分发机制,由操作系统提供的I/O多路复用机制,比如select或者epoll。程序首先将事件注册到分发器上,当有事件到达是,分发器会发出通知“在已注册的事件中,一个或多个事件已经就绪”。程序接到通知后,就可以在非阻塞的情况下对事件进行处理了。
3)Event handle事件处理程序提供一组接口,每个接口对应了一种类型的事件,供Reactor在相应的事件发生时调用,执行相应的事件处理,通常会绑定一个有效的句柄。在libevent中,就是event结构体。

4.Reactor事件处理流程





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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值