我需要每隔10秒在我的程序中执行一些操作,而且我不知道如何在C ++控制台应用程序中执行此操作。在C#中我可以创建一个计时器,但我现在在这里挣扎......
睡眠();不是一个选项,因为据我所知,它使您的程序在X秒内处于非活动状态,我需要我的应用程序处于活动状态并正常工作,并且一直在计算。
请帮我解决这个小问题(或大问题),我是C ++和学习ATM的新手:)
所以我设置了BOOST库,现在我正在做这样的事情。
boost::timer t;
while (true)
{
if (t.elapsed() > 1)
{
cout << t.elapsed() << endl;
t.restart();
}
}
它是否足够好还是应该有更好的方法?哦不,这非常糟糕,不停地吃掉25%的CPU。 :(
答案 0 :(得分:6)
答案 1 :(得分:1)
简单的方法是创建一个新线程(man pthreads
如果您正在使用Linux
)并在其中执行此操作。
以下是一些如何使用POSIX线程的信息和示例 - http://www.kernel.org/doc/man-pages/online/pages/man3/pthread_create.3.html