libevent学习 Reactor模式

Reactor逆置了事件处理流程, 应用程序需要提供相应接口注册到Reactor上,如果相应的事件发生,Reactor将主动调用应用程序注册的接口

Reactor模型框架组件:事件源,Reactor框架,多路复用机制和事件处理程序

事件源: linux是文件描述符 windows是socket或者handle,统称句柄集, 程序在指定句柄上注册关心的事件

event demultiplexer -- 事件多路分发机制:由操作系统提供的i/o多路复用机制,比如select和epoll.程序首先将关心的句柄及其事件注册到event demultiplexer上,当有事件到达时,event demultiplexer会发出通知"在已经注册的句柄集中,一个或多个句柄事件已经就绪";程序收到通知后,就可以在非阻塞的情况下对事件进行处理了,libevent使用结构体eventop进行封装,以统一的接口来支持这些i/o多路复用机制.

Reactor是事件管理的接口,内部使用event demultiplexer注册注销事件,并运行事件循环,当有事件进入就绪状态,调用注册时间的回调函数处理事件.对应到libevent中就是event_base结构体.

Event Handler 事件处理程序提供一组接口,每个接口对应一种类型事件,供Reactor在相应事件发生时调用,执行相应的事件处理.对应到libevent中就是event结构体

posted on 2014-04-02 20:33  kangbry  阅读(324)  评论(0编辑  收藏  举报

导航