当前位置: 首页>>技术教程>>正文


linux – CLOCK_MONOTONIC&之间有什么区别? CLOCK_MONOTONIC_RAW?

, ,

问题描述

根据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的实用程序。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/10132.html,未经允许,请勿转载。