libevent学习 Reactor模式

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

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

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

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

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

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

相关文章
相关标签/搜索