ACE_Reactor实现计时器

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;   
}  

每隔一秒钟输出一行



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

C++程序员Carea

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值