ACE_Reactor的原理参考:http://blog.csdn.net/calmreason/article/details/20694523点击打开链接
其中ACE_Reactor的schedule_timer()方法对应的四个参数如下
schedule_timer (ACE_Event_Handler *event_handler,
const void *arg,
const ACE_Time_Value &delay,
const ACE_Time_Value &interval = ACE_Time_Value::zero);
第一个参数指向一个ACE_Event_Handler类,该类提供了
virtual int handle_timeout (const ACE_Time_Value &tv,
const void *arg)
方法,当设置的间隔时间到达时,将触发ACE_Event_Handler的 handle_timeout方法
第二个参数表传送的参数,跟handle_timeout方法的arg参数对应
第三个参数表计时器开始起作用的时间,时间类对应为ACE_Time_Value类
第四个参数表计时器间隔执行的时间,如为0,则表计时器只计时一次
#include <ace/OS.h>
#include <ace/Reactor.h>
#include <iostream>
class MyTimerHandler : public ACE_Event_Handler
{
public:
MyTimerHandler(int delay,int inteval)
{
//注册回调器
this->reactor(ACE_Reactor::instance());
//设置回调器多长时间回调一次
this->reactor()->schedule_timer(this,
0, //传递handle_timeout给的参数
ACE_Time_Value(delay),
ACE_Time_Value(inteval));
}
//定时器回调函数
int handle_timeout (const ACE_Time_Value ¤t_time,
const void * = 0)
{
std::cout<<"time out :: handle_timeout() "<<std::endl;
return 0;
}
};
int main(int argc, char *argv[])
{
//创建一个定时器
MyTimerHandler mt(1,1);
//捕捉定时器到时事件,到时后,执行计时器的handle_timeout()方法
ACE_Reactor::instance ()->run_reactor_event_loop();
return 0;
}
每隔一秒钟输出一行