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結構體操作系統