如何创建计时器? (每隔X秒/分钟/小时做一些事情)

时间:2011-01-31 20:14:02

标签: c++

我需要每隔10秒在我的程序中执行一些操作,而且我不知道如何在C ++控制台应用程序中执行此操作。在C#中我可以创建一个计时器,但我现在在这里挣扎......

睡眠();不是一个选项,因为据我所知,它使您的程序在X秒内处于非活动状态,我需要我的应用程序处于活动状态并正常工作,并且一直在计算。

请帮我解决这个小问题(或大问题),我是C ++和学习ATM的新手:)

所以我设置了BOOST库,现在我正在做这样的事情。

boost::timer t;

while (true)
{
    if (t.elapsed() > 1)
    {
        cout << t.elapsed() << endl;
        t.restart();
    }
}

它是否足够好还是应该有更好的方法?哦不,这非常糟糕,不停地吃掉25%的CPU。 :(

2 个答案:

答案 0 :(得分:6)

Boost有一个计时器库。

事实上,如果你还没有遇到Boost,我相信你会发现它非常有用。


要执行基于事件的计时器,您应该查看this answer

答案 1 :(得分:1)

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

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