【问题标题】:C++: More precise timing intervalsC++:更精确的时间间隔
【发布时间】:2011-01-23 03:26:38
【问题描述】:

我需要定期执行特定任务,目前正在使用 nanosleep。

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

有没有比这样做更好的方法:

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

沃尔特

【问题讨论】:

  • 它与 C++ 无关,它取决于操作系统。 sleep 的精度还不够好吗?
  • 我的应用程序不是很稳定 - 我看不到日志文件中发生了什么,但基本上它应该每 10 秒左右保存一个文件。我让它运行了几个小时,发现它跳过了一堆它应该保存的文件。我怎么知道发生了什么?

标签: c++ timing


【解决方案1】:

其中一个选项可能是创建一个线程来执行指定超时的任务。

【讨论】:

  • 这是比睡觉更好的方法吗?他们不应该有相同的分辨率吗?
【解决方案2】:

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

这可以通过 QTimer 和 QRunnable 来完成。

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

根据底座,大多数情况下分辨率约为 1 毫秒。根据您的需要,这应该足够了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-18
    • 2013-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多