如何创建计时器? (每X秒/分钟/小时执行一次)
问题描述:
我需要每10秒在程序中执行一些操作,而且我不知道如何在C++控制台应用程序中执行此操作。在C#中,我可以创建一个计时器,但现在我在这里苦苦挣扎...如何创建计时器? (每X秒/分钟/小时执行一次)
sleep();不是一种选择,因为据我所知,它会让你的程序在X秒内处于非活动状态,所以我需要我的应用程序处于活动状态并开始工作,计算所有时间。
请帮我这个小(或大?)的问题,我很新的C++和学习ATM :)
所以我已经设置了Boost库,现在我做这样的事情。
boost::timer t;
while (true)
{
if (t.elapsed() > 1)
{
cout << t.elapsed() << endl;
t.restart();
}
}
是否够好或应该有更好的方法?哦,不,它非常糟糕,不停地吃我的CPU的25%。 :(
答
简单的方法是创建一个新线程(如果使用Linux
,则为man pthreads
)并在其中执行此操作。
下面是一些信息和示例如何使用POSIX线程 - http://www.kernel.org/doc/man-pages/online/pages/man3/pthread_create.3.html
睡眠()是,如果你把它放在一个单独的线程的选项。 – 2011-01-31 20:20:01
这10秒必须确切吗?由于您的应用程序是“随时计算”的,因此您可以在外部循环之一中引入if语句,检查当前时间,如果在预定时间之后,则调用周期性工作函数并调整计划时间下次它应该运行。 – 2011-01-31 21:36:14