【发布时间】:2015-06-08 03:28:04
【问题描述】:
我在 Linux 2.6 上使用 clock_gettime()(来自 time.h)来控制我的线程循环中的时间。我需要在 +/- 5mS 时间范围内 500mS。它似乎给了我 500 毫秒的时间,然后开始漂移或抖动到 +/- 30 毫秒:
我正在使用 CLOCK_REALTIME 调用。有什么办法可以改善它的偏差吗?我只是用它计算每毫秒,一旦计数器达到 500,就会触发中断。
这也在 QT 4.3 框架内。 QTimer 似乎比这更紧张。
【问题讨论】:
-
也许你可以展示你用来测试的代码。有时,由于某些累加器逻辑,这些事情最终会归结为数值精度。
-
我们需要有关您的系统和代码的更多信息。你在使用一些过时的嵌入式系统吗?在某些 ARM 架构上,睡眠的精度不可能超过几毫秒。一些架构没有高精度定时器,它们的任务切换频率为 100 Hz -> 可用的睡眠精度约为 10 ms。