2011-01-23 62 views
2

我需要定期执行特定任务,目前正在使用nanosleep。C++:更精确的时间间隔

该任务需要每秒或每10秒运行一次。

是否有更好的方法来做到这一点比:

while(true) 
{ 
doTask(); 
sleep(); 
} 

沃尔特

+2

它与C++无关,取决于操作系统。 “睡眠”的精确度不够好吗? – ruslik 2011-01-23 03:33:30

+0

[C++跨平台高分辨率定时器]的可能的重复(http://stackoverflow.com/questions/1487695/c-cross-platform-high-resolution-timer) – 2011-01-23 03:47:23

回答

1

的选择之一可能是创建一个线程,将做任务用指定超时。

0

您可以使用线程库来创建一个线程,该线程处理运行doTask()。您的主线程只会保持睡眠状态并每隔1秒或10秒运行一次。

这可以用QTimer和QRunnable来完成。

http://doc.qt.nokia.com/latest/qtimer.html

据被告席上,分辨率大约是在大多数情况下1毫秒。为了您的需要,这应该是足够的。