您的位置:首页 > 其它

定时器(了解)

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时间的多少。时间少了就没有定时器执行,多了则都会执行。具体程序中用,还需研究。


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: