根据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.
根据Webster在线词典,Monotonic的含义为:2:具有独立变量或项的下标增加时要么永远不增加,要么永远不减少的属性。
换句话说,它不会向后跳跃。如果您正在计时某些代码,则我可以看到这将是一个重要的属性。
然而,普通版本和原始版本之间的差异并不清楚。是否有人能够阐明NTP如何仍能影响CLOCK_MONOTONIC?
CLOCK_MONOTONIC
的影响方面存在矛盾。如果有权威来源能够澄清差异,那将非常好。 - Dolda2000CLOCK_MONOTONIC
受到时钟速率变化(通过adjtimex
)的影响,但不受跳跃的影响。另一个答案只讨论了非跳跃情况。 - Ben Jacksonadjtime
引起的速率变化不同;前者是为了更准确地匹配实际速率而进行的调整,而后者是为了调整绝对时间而故意偏离真实速率的异常情况(这应该只影响CLOCK_REALTIME
,而不是CLOCK_MONOTONIC
,对吗?)。 - Dolda2000CLOCK_REALTIME
,因为这是一个更受欢迎的时钟。当你请求CLOCK_MONOTONIC
时,它会应用一个偏移量(基本上是启动时间)。当时钟被调整时,相应的反向调整被添加到偏移量中,以使单调时钟不受干扰。当时钟被调整或倾斜时(其效果在内核中混合在一起),实时偏移量没有相应的计数器调整,因此它的频率发生变化。 - Ben Jackson