问题描述
根据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.
根据韦伯斯特在线词典,单调意味着:
2: having the property either of never increasing or of never decreasing as the values of the independent variable or the subscripts of the terms increase.
换句话说,它不会向后跳。我可以看到,如果您正在计时一些代码,那么这将是一个重要的属性。
但是,普通版本和原始版本之间的区别尚不清楚。有人可以阐明NTP如何仍然影响CLOCK_MONOTONIC吗?
最佳方法
CLOCK_MONOTONIC
永远不会由于NTP时间调整而出现中断,但是随着NTP了解本地振荡器和上游服务器之间存在什么错误,它的频率会发生变化。
CLOCK_MONOTONIC_RAW
只是本地振荡器,不受NTP约束。如果您想针对由于NTP而无法解决问题的时钟实现其他时间同步算法,这可能非常有用。尽管ntpd(NTP协议的参考实现和最广泛的NTP守护程序)被称为”gentle”(具有时间调整功能),但准确地说是绝对时间比较温和。它愿意将时钟摆幅降低500ppm,如果您能够相对于其他标准来测量时钟频率,那将是非常惊人的。
在诸如pthread_timedwait_monotonic
之类的设施提供使用该时基的选项之前,将限制CLOCK_MONOTONIC_RAW
的实用程序。