【发布时间】:2014-10-24 08:44:08
【问题描述】:
我正在编写一些需要纳秒级分辨率的测试代码。当我将 clock_gettime 与 CLOCK_MONOTONIC 一起使用时,我得到了一个我期望的值:3327.874384321。 当我将 clock_gettime 与 CLOCK_MONOTONIC_RAW 一起使用时,我得到了一个我没想到的值:3327.875723000
我已经在循环中运行了这个,所有返回的值都具有“截断”的纳秒分辨率,000。
uname -a 的输出:Linux raspberrypi 3.12.22+ #691 PREEMPT Wed Jun 18 18:29:58 BST 2014 armv6l GNU/Linux
对正在发生的事情的想法?如何解决? 我目前正在考虑禁用 NTP,以便我可以使用 CLOCK_MONOTONIC
【问题讨论】:
-
NTP 与此有什么关系?你为什么想要 RAW 时钟?
-
根据各种读数,CLOCK_MONOTONIC 可以通过 NTP 进行调整,从而产生任何样本被时钟调整污染的可能性。也许我误解了......这是一个stackoverflow参考:stackoverflow.com/questions/14270300/…
-
正如对该问题的回答所述,
CLOCK_MONOTONIC不反映设置时间或 NTP 调整的不连续性。相反,它的提前率只是被调整以校正硬件时钟频率相对于实时的不精确性。 -
R- 同意 NTP 更改速率(或频率),因此可能会扭曲结果,还是我仍然误解?
-
如果 NTP 改变速率,它只是让它更接近正确,而不是你的硬件出现偏差(时钟运行太快或太慢)。我不明白您为什么更喜欢不太正确的值。
标签: c linux raspberry-pi precision timing