您能解释一下Linux 返回的时钟CLOCK_REALTIME与CLOCK_MONOTONIC时钟之间的区别clock_gettime()吗?
CLOCK_REALTIME
CLOCK_MONOTONIC
clock_gettime()
如果我需要计算外部源产生的时间戳与当前时间之间的经过时间,哪个是更好的选择?
最后,如果我有一个NTP守护进程周期性地调整系统时间,怎么做这些调整与每个互动CLOCK_REALTIME和CLOCK_MONOTONIC?
CLOCK_REALTIME代表机器对当前壁钟,一天中的时间的最佳猜测。正如Ignacio和MarkR所说,这意味着CLOCK_REALTIME随着系统时钟(包括NTP)的改变,它可以向前和向后跳跃。
CLOCK_MONOTONIC表示自过去某个固定点以来经过的绝对时间。它不受系统时间时钟变化的影响。
如果要计算在一台计算机上观察到的两个事件之间的经过时间而又不进行中间重启,CLOCK_MONOTONIC则最好的选择是。
请注意,在Linux CLOCK_MONOTONIC上,虽然通过POSIX定义,它不会测量挂起所花费的时间。您可以将特定CLOCK_BOOTTIME于Linux 的单调时钟用于挂起期间保持运行。
CLOCK_BOOTTIME