Poco::Timer 提供了定时任务的功能,从线程池中创建一个线程,每隔一段时间让线程中的主体代码执行一次。其余时间此线程阻塞在Event.trywait(long seconds)调用上,来达到定时的目的。
我认为这个功能的一个遗憾是没有提供在一个给定时间执行线程的构造函数。构造函数有两个参数,一个是两次执行之间的时间间隔;另一个是初次执行时的延时。
对定时任务的主体代码要用TimerCallback模版类进行包装。注意callback的函数参数是Timer&.
demo
void TimerTest::testTimer()
{
Timer t(100, 200);
TimerCallback<TimerTest> tc(*this, &TimerTest::onTimer);
t.start(tc);
//t.stop();
}
void TimerTest::onTimer(Timer& timer)
{
std::cout << "hello" << std::endl;
}