您的位置:首页 > Web前端 > React

Reactor模式

2016-01-19 20:16 656 查看

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事件处理流程

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: