如何创建计时器? (每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%。 :(

+4

睡眠()是,如果你把它放在一个单独的线程的选项。 – 2011-01-31 20:20:01

+0

这10秒必须确切吗?由于您的应用程序是“随时计算”的,因此您可以在外部循环之一中引入if语句,检查当前时间,如果在预定时间之后,则调用周期性工作函数并调整计划时间下次它应该运行。 – 2011-01-31 21:36:14

升压具有定时器库。

事实上,如果你有没有碰到过升压已经来了,我敢肯定你会发现它非常有用。


做一个基于事件的计时器,你应该看看this answer

简单的方法是创建一个新线程(如果使用Linux,则为man pthreads)并在其中执行此操作。

下面是一些信息和示例如何使用POSIX线程 - http://www.kernel.org/doc/man-pages/online/pages/man3/pthread_create.3.html