博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
定时器(了解)
阅读量:5233 次
发布时间:2019-06-14

本文共 2261 字,大约阅读时间需要 7 分钟。

// Test.cpp : 定义控制台应用程序的入口点。//#include "../I_Timer.H"#include 
void onTimer1(){ std::cout << "onTimer1,it should pass 1 s!" << std::endl;}void onTimer2(){ std::cout << "onTimer2,it should pass 2 s!*****" << std::endl;}void onTimer_chen(){ std::cout << "onTimer_chen,it should pass 3 s!***************" << std::endl;}int main(int argc, char* argv[]){ I_TimerFactory* tf = NEW(TimerFactory);// auto tm01 = tf->createTimer();#if 1 auto myTimer1 = /*Timer::createTimer();*/tf->createTimer(); auto myTimer2 = /*Timer::createTimer();*/tf->createTimer(); auto myTimer_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 (int i=0;i<10;++i) { tf->driveTimer(); boost::this_thread::interruptible_wait(1000); std::cout<<1<
stop(); for (int i=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;#if 0 // 也可以移入其他线程驱动 // 不推荐,非线程安全 boost::thread thrd([](){ std::cout << "other thread drive!" << std::endl; for (int i=0;i<100;++i) { tf->driveTimer(); boost::this_thread::interruptible_wait(100); } });#endif // thrd.join();#endif std::cout << std::endl << "---------------------*" << std::endl; return 0;}

一直搞不懂这个定时器怎么用的,正好程序里面有个例子,实验了一下

主要是这个drive(),这个定时器需要自己调用drive驱动

tf->driveTimer(); boost::this_thread::interruptible_wait(100);
interruptible_wait表示等待100ms,如果时间是100ms,就没有定时器到时间,1000ms则每次myTimer1总会执行,myTimer2,myTimer2则不一定,2000ms则myTimer1,myTimer2则每次执行, myTimer3不一定,3000ms则三个定时器都会执行,看这个wait时间的多少。时间少了就没有定时器执行,多了则都会执行。具体程序中用,还需研究。
 

转载于:https://www.cnblogs.com/zzyoucan/p/3704676.html

你可能感兴趣的文章
csdn博客又開始更新了
查看>>
InstallShield12豪华版破解版下载|InstallShield下载|软件打包工具
查看>>
CentOs6系统安装mailx发邮件
查看>>
真心希望不会把这个博客荒了
查看>>
【NOIP2012普及组真题】 寻宝
查看>>
django2.2 关联表的必填on_delete参数的含义
查看>>
java循环map
查看>>
Split the Number(思维)
查看>>
linux中历史命令的一点发现
查看>>
获取多少万多少亿
查看>>
用threading和Queue模块实现多线程的端口扫描器
查看>>
团队编程项目作业5
查看>>
Java+大数+高精度
查看>>
jQuery Ajax 实例 ($.ajax、$.post、$.get)
查看>>
Spring MVC入门小例子
查看>>
ASP.NET没有魔法——ASP.NET MVC 路由的匹配与处理
查看>>
Rails 5 开发进阶
查看>>
iOS代码规范
查看>>
iOS生成Bundle包及使用
查看>>
初级算法-11. 旋转图像
查看>>