新闻资讯
看你所看,想你所想

schedule_timer

schedule_timer

schedule_timer是ACE_Reactor的一个成员函式, ACE_Reactor又称为反应堆或者反应器。
反应器的schedule_timer函式用来设定一个定时事件,当时间到达时回调事件处理器的handle_timeout处理函式。
schedule_timer的原型如下:
schedule_timer (ACE_Event_Handler*event_handler, const void *arg, const ACE_Time_Value &delay, constACE_Time_Value &interval=ACE_Time_Value::zero)
参数说明:
event_handler:事件处理器指针
arg:传递给handle_timeout的参数
delay:延迟多久后定时器开始启动
interval:定时器继续触发的时间间隔,如果採用默认值,则表示定时器只在延迟后触发一次
返回值为一个唯一的timer_id,该只可用于cancel_timer取消一个定时器,注意,cancel_timer会回调处理器的handle_close函式
handle_timeout的原型如下:
int handle_timeout (const ACE_Time_Value&current_time, const void *act=0)
参数说明:
current_time:当前回调该处理函式的时间。要该参数是因为系统本身有时延,这个值和定时器本该触发的时间有一定的误差。
act:为handle_timeout的arg,注意,要考虑act的作用域(在调用schedule_timer时arg的作用域是否在调用反应器的run_event_loop()时仍然有效)
例子代码如下:
#include <iostream>#include <ace/Event_Handler.h>#include <ace/Reactor.h>class Timer:public ACE_Event_Handler{    public:    int handle_timeout(const ACE_Time_Value&current_time, const void *act=0)    {    char*p = (char*) act;    std::cout<< "time out:";    if(p)    std::cout<< p;    std::cout<< std::endl;    }    Timer(int delay,int interval,const void *arg = 0)    {   ACE_Time_Value t1(delay);   ACE_Time_Value t2(interval);   timer_id_= ACE_Reactor::instance()->schedule_timer(this,arg,t1,t2);    }private:    longtimer_id_;};int main(int argc, char* argv[]){    Timert(3,1,"hahahha");    ACE_Reactor::instance()->run_event_loop();    return 0;}

转载请注明出处海之美文 » schedule_timer

相关推荐

声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:ailianmeng11@163.com