libevent詳解三(reactor)

1. reactor模式

reactor簡介。

reactor:反應器模式,是一個事件分發器,IO多路複用模型。如下圖。
在這裏插入圖片描述
不同的事件,經過reactor,分發給不同的事件處理器去處理。

一個簡單的reactor類需要包括如下方面。

  1. 註冊某些事件的回調函數。
  2. 事件循環(調用epoll等,獲取觸發事件)。

libevent中的reactor模型。

已上一節中例子說明:libevent詳解二(使用)

  1. 事件註冊。
    A. 首先註冊監聽fd的可讀時間(新鏈接到來時觸發)。爲函數evconnlistener_new_bind。生成evconnlistener對象時,傳入的回調函數connect_func。此步驟即完成了對監聽fd的可讀事件的回調函數的註冊。
    B. 新鏈接可讀時間註冊。
    在connect_func中,對新鏈接註冊可讀時間的回調函數。代碼爲:
bufferevent_setcb(bev, read_func, NULL, NULL, NULL);
  1. 事件循環(調用epoll等)。
    例子中,調用函數event_base_dispatch,之後函數調用關係爲event_base_dispatch->event_base_loop->epoll_dispatch->epoll_wait
    通過epoll_wait獲取觸發的events。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章