根据Ubuntu下的Linux手册页
CLOCK_MONOTONIC
Clock that cannot be set and represents monotonic time since
some unspecified starting point.
CLOCK_MONOTONIC_RAW (since Linux 2.6.28; Linux-specific)
Similar to CLOCK_MONOTONIC, but provides access to a raw hard‐
ware-based time that is not subject to NTP adjustments.
根据韦伯斯特在线词典Monotonic的意思是:
2:具有永不增加或永不增加的属性 作为自变量或下标的值减少 这些条款的增加。
换句话说,它不会向后跳。我可以看到,如果你计算一些代码,这将是一个重要的属性。
然而,正常版本和原始版本之间的差异尚不清楚。有人可以了解一下NTP如何影响CLOCK_MONOTONIC?
答案 0 :(得分:30)
CLOCK_MONOTONIC
由于NTP时间调整而从未出现过不连续性,但 会随着NTP了解本地振荡器与上游服务器之间存在的错误而发生频率变化。
CLOCK_MONOTONIC_RAW
只是本地振荡器,不受NTP约束。如果您想针对由于NTP而没有打击您的时钟实现一些其他时间同步算法,这可能非常有用。虽然ntpd(NTP协议的参考实现和最普遍的NTP守护进程)被称为时间调整“温和”,但是对于绝对时间来说它更温和更准确。它愿意将时钟旋转500ppm,如果你能够根据其他标准测量你的时钟频率,这是非常引人注目的。
在CLOCK_MONOTONIC_RAW
等设施提供使用该时基的选项之前,pthread_timedwait_monotonic
的效用将会受到限制。
答案 1 :(得分:2)
ntpd
不会导致时间跳。而是使用类似adjtime的调整,同时影响CLOCK_MONOTONIC
和CLOCK_REALTIME
(但不会影响CLOCK_MONOTONIC_RAW
)。