定时器(了解)
2014-05-02 23:30
302 查看
//Test.cpp:定义控制台应用程序的入口点。 // #include"../I_Timer.H" #include<boost/thread.hpp> voidonTimer1() { std::cout<<"onTimer1,itshouldpass1s!"<<std::endl; } voidonTimer2() { std::cout<<"onTimer2,itshouldpass2s!*****"<<std::endl; } voidonTimer_chen() { std::cout<<"onTimer_chen,itshouldpass3s!***************"<<std::endl; } intmain(intargc,char*argv[]) { I_TimerFactory*tf=NEW(TimerFactory); //autotm01=tf->createTimer(); #if1 automyTimer1=/*Timer::createTimer();*/tf->createTimer(); automyTimer2=/*Timer::createTimer();*/tf->createTimer(); automyTimer_chen=/*Timer::createTimer();*/tf->createTimer(); myTimer1->regTimer(boost::bind(onTimer1)); myTimer1->setInterval(1000); myTimer1->start(); myTimer2->regTimer(boost::bind(onTimer2)); myTimer2->setInterval(2000); myTimer2->start(); myTimer_chen->regTimer(boost::bind(onTimer_chen)); myTimer_chen->setInterval(3000); myTimer_chen->start(); //tf->driveTimer(); for(inti=0;i<10;++i) { tf->driveTimer(); boost::this_thread::interruptible_wait(1000); std::cout<<1<<std::endl; } std::cout<<"myTimer2stop!"<<std::endl; std::cout<<"***************"<<std::endl; getchar(); myTimer2->stop(); for(inti=0;i<100;++i) { tf->driveTimer(); boost::this_thread::interruptible_wait(100); } //析构会反注册 myTimer2=tf->createTimer(); myTimer2->regTimer(boost::bind(onTimer2)); myTimer2->setInterval(2000); myTimer2->start(); getchar(); std::cout<<std::endl<<"123456897*"<<std::endl; #if0 //也可以移入其他线程驱动 //不推荐,非线程安全 boost::threadthrd([](){ std::cout<<"otherthreaddrive!"<<std::endl; for(inti=0;i<100;++i) { tf->driveTimer(); boost::this_thread::interruptible_wait(100); } }); #endif //thrd.join(); #endif std::cout<<std::endl<<"---------------------*"<<std::endl; return0; }
一直搞不懂这个定时器怎么用的,正好程序里面有个例子,实验了一下
主要是这个drive(),这个定时器需要自己调用drive驱动
tf->driveTimer(); boost::this_thread::interruptible_wait(100);
interruptible_wait表示等待100ms,如果时间是100ms,就没有定时器到时间,1000ms则每次myTimer1总会执行,myTimer2,myTimer2则不一定,2000ms则myTimer1,myTimer2则每次执行, myTimer3不一定,3000ms则三个定时器都会执行,看这个wait时间的多少。时间少了就没有定时器执行,多了则都会执行。具体程序中用,还需研究。
相关文章推荐
- 【深入了解cocos2d-x 3.x】定时器(scheduler)的使用和原理探究(3)
- 1、CC2541蓝牙4.0芯片中级教程——基于OSAL操作系统的运行流程了解+定时器和串口例程了解
- 一起了解Javascript定时器
- IOS学习 多线程NSThread 消息循环(了解)涉及定时器
- 【原】java定时器简单了解
- 【深入了解cocos2d-x 3.x】定时器(scheduler)的使用和原理探究(1)
- 【深入了解cocos2d-x 3.x】定时器(scheduler)的使用和原理探究(2)
- 【深入了解cocos2d-x 3.x】定时器(scheduler)的使用和原理探究(2)
- 创建定时器 和简单的了解了一下APC消息队列 14.4.29
- 【深入了解cocos2d-x 3.x】定时器(scheduler)的使用和原理探究(3)
- 【深入了解cocos2d-x 3.x】定时器(scheduler)的使用和原理探究(1)
- 关于spring中使用定时器quartz,暂处于了解状态。。
- stm32成长记之定时器中断简单了解
- Windows Virtual PC,你了解它吗? 推荐
- mongoDB入门需要了解的基本知识
- 定时器
- NVMain运行机制深入了解之一
- CSS3中动画TRANSFORM必须要了解的SKEW变化原理
- 用Unity做游戏,你需要深入了解一下IL2CPP(一)
- Service全方位了解,总有你不知道的一面