ACE反應器 Reactor 模式 4

2021-04-26 20:24:27 字數 800 閱讀 4130

定時器的實現

通過reactor機制,還可以很容易的實現定時器的功能,使用方式如下。

編寫乙個事件反應器,過載

handle_timeout()方法,該方法是定時器的觸發時間到時,會自動觸發該方法。

通過reactor的

schedule_timer()方法註冊定時器。

啟動reacotr的

handle_events()事件分發迴圈。

當不想使用定時器時,可以通過reactor的

cancel_timer()方法登出定時器。

下面的**簡單的實現了乙個定時器,並具有基本的開啟,關閉功能。

#include

#include

class mytimerhandler : public ace_event_handler

int open()    //註冊定時器

int close()    //取消定時器

//定時器**函式

int handle_timeout (const ace_time_value ¤t_time,

const

void * = 0)

};int main(int argc, char *argv)

timer->close();

ace_os::printf("cancel timer");

while(true)

ace_reactor::instance()->handle_events();

return 0;

}**功能比較簡單,這裡就不多做介紹了。

ACE反應器 Reactor 模式 3

在伺服器端使用reactor框架 使用reactor框架的伺服器端結構如下 伺服器端註冊兩種事件處理器,clientacceptor和clientservice clientservice類負責和客戶端的通訊,每乙個clientservice物件對應乙個客戶端的socket連線。clientacce...

ACE反應器 Reactor 模式 2

在socket程式設計中,常見的事件就是 讀就緒 寫就緒 通過對這兩個事件的捕獲分發,可以實現socket中的非同步操作。socket程式設計中的事件處理器 在前面我們已經介紹過,在ace反應器框架中,任何都必須派生自ace event handler類,並通過過載其相應會調事件處理函式來實現相應的...

ACE反應器 Reactor 模式 4

定時器的實現 通過reactor機制,還可以很容易的實現定時器的功能,使用方式如下。編寫乙個事件反應器,過載 handle timeout 方法,該方法是定時器的觸發時間到時,會自動觸發該方法。通過reactor的 schedule timer 方法註冊定時器。啟動reacotr的 handle e...