ACE反应器(Reactor)模式(4)
来源:互联网 发布:淘宝怎么看上架的时间 编辑:程序博客网 时间:2024/05/01 13:17
转载于:http://www.cnblogs.com/TianFang/archive/2006/12/18/596012.html
定时器的实现
通过Reactor机制,还可以很容易的实现定时器的功能,使用方式如下。
- 编写一个事件反应器,重载handle_timeout()方法,该方法是定时器的触发时间到时,会自动触发该方法。
- 通过Reactor的schedule_timer()方法注册定时器。
- 启动reacotr的handle_events()事件分发循环。
- 当不想使用定时器时,可以通过Reactor的cancel_timer()方法注销定时器。
下面的代码简单的实现了一个定时器,并具有基本的开启,关闭功能。
1 #include <ace/OS.h> 2 #include <ace/Reactor.h> 3 4 class MyTimerHandler : public ACE_Event_Handler 5 { 6 private: 7 int inteval; //执行时间间隔 8 int delay; //延迟执行时间 9 int timerid;10 11 public:12 MyTimerHandler(int delay,int inteval)13 {14 this->delay=delay;15 this->inteval=inteval;16 }17 18 int open() //注册定时器19 {20 ACE_Time_Value delaytime(inteval);21 ACE_Time_Value intevaltime(inteval);22 timerid = reactor()->schedule_timer(this,23 0, //传递handle_timeout给的参数24 delaytime,25 intevaltime);26 return timerid;27 }28 29 int close() //取消定时器30 {31 return reactor()->cancel_timer(timerid);32 }33 34 //定时器回调函数35 int handle_timeout (const ACE_Time_Value ¤t_time,36 const void * = 0)37 {38 time_t epoch = ((timespec_t)current_time).tv_sec;39 ACE_DEBUG ((LM_INFO,40 ACE_TEXT ("handle_timeout: %s\n"),41 ACE_OS::ctime (&epoch)));42 return 0;43 }44 };45 46 int main(int argc, char *argv[]) 47 {48 MyTimerHandler * timer = new MyTimerHandler (3,5);49 timer->reactor(ACE_Reactor::instance());50 timer->open();51 52 for(int i=0;i<2;i++) //触发次handle_timeout事件53 {54 ACE_OS::printf("\n%d\n",i);55 ACE_Reactor::instance()->handle_events();56 }57 58 timer->close();59 ACE_OS::printf("cancel timer");60 while(true)61 ACE_Reactor::instance()->handle_events();62 return 0; 63 }
代码功能比较简单,这里就不多做介绍了。
0 0
- ACE反应器(Reactor)模式(4)
- ACE反应器(Reactor)模式(4)
- ACE反应器(Reactor)模式(4)
- ACE反应器(Reactor)模式(4)
- ACE反应器(Reactor)模式(4)
- ACE反应器(Reactor)模式(4)
- ACE反应器(Reactor)模式
- ACE反应器(Reactor)模式
- ACE反应器(Reactor)模式
- ACE反应器(Reactor)模式
- ACE反应器(Reactor)模式
- ACE反应器(Reactor)模式
- ACE反应器(Reactor)模式
- ACE反应器(Reactor)模式
- ACE反应器(Reactor)模式
- ACE反应器(Reactor)模式
- ACE反应器(Reactor)模式
- ACE反应器(Reactor)模式
- 数据储存之plist文件
- ACE主动对象模式(2)
- ACE反应器(Reactor)模式(1)
- ACE反应器(Reactor)模式(2)
- ACE反应器(Reactor)模式(3)
- ACE反应器(Reactor)模式(4)
- SSE命令示例代码(整型、读写控制寄存器、混杂、矩阵变换)
- Android NDK开发篇(一):新版NDK环境搭建(免Cygwin,超级快)
- ACE接受器-连接器模式
- ACE_Message_Block功能简介
- ACE前摄器Proactor模式
- ab压测添加压测参数说明
- UGUI研究院之全面理解图集与使用
- 程序员常用工具