定時器的實現
通過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 模式 4
定時器的實現 通過reactor機制,還可以很容易的實現定時器的功能,使用方式如下。編寫乙個事件反應器,過載 handle timeout 方法,該方法是定時器的觸發時間到時,會自動觸發該方法。通過reactor的 schedule timer 方法註冊定時器。啟動reacotr的 handle e...
ACE反應器 Reactor 模式 2
在socket程式設計中,常見的事件就是 讀就緒 寫就緒 通過對這兩個事件的捕獲分發,可以實現socket中的非同步操作。socket程式設計中的事件處理器 在前面我們已經介紹過,在ace反應器框架中,任何都必須派生自ace event handler類,並通過過載其相應會調事件處理函式來實現相應的...