首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >CLOCK_REALTIME和CLOCK_MONOTONIC的区别是什么?

CLOCK_REALTIME和CLOCK_MONOTONIC的区别是什么?
EN

Stack Overflow用户
提问于 2010-08-19 23:34:23
回答 4查看 204.4K关注 0票数 236

你能解释一下Linux上clock_gettime()返回的CLOCK_REALTIMECLOCK_MONOTONIC时钟的区别吗?

如果我需要计算外部源产生的时间戳和当前时间之间经过的时间,哪一个是更好的选择?

最后,如果我有一个NTP守护进程定期调整系统时间,这些调整如何与CLOCK_REALTIMECLOCK_MONOTONIC交互

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-08-20 09:45:42

CLOCK_REALTIME表示机器对当前挂钟、一天中的时间的最佳猜测。正如IgnacioMarkR所说,这意味着CLOCK_REALTIME可以随着系统时间时钟的改变而向前和向后跳转。

CLOCK_MONOTONIC表示自过去某个任意固定点以来经过的绝对挂钟时间。它不受系统时间时钟变化的影响。

如果您希望计算在一台计算机上观察到的两个事件之间的运行时间,而不需要重新启动,则CLOCK_MONOTONIC是最佳选择。

注意,在Linux上,CLOCK_MONOTONIC不会测量挂起所花费的时间,尽管根据POSIX的定义,它应该测量挂起时间。您可以将特定于Linux的CLOCK_BOOTTIME用于在挂起期间保持运行的单调时钟。

票数 273
EN

Stack Overflow用户

发布于 2010-08-19 23:37:52

CLOCK_REALTIME受到NTP的影响,可以向前和向后移动。CLOCK_MONOTONIC并非如此,它以每个节拍一个节拍的速度前进。

票数 29
EN

Stack Overflow用户

发布于 2010-08-20 00:20:45

除了Ignacio's answer之外,CLOCK_REALTIME还可以飞跃前进,偶尔也会后退。CLOCK_MONOTONIC两者都不做;它只是继续前进(尽管它可能会在重启时重置)。

一个健壮的应用程序需要能够容忍CLOCK_REALTIME偶尔向前跳跃(可能偶尔会非常轻微地向后跳跃,尽管这更多是一种边缘情况)。

想象一下,当你挂起你的笔记本电脑时会发生什么-- CLOCK_REALTIME会在简历之后向前跳转,而CLOCK_MONOTONIC不会。在VM上试用它。

票数 20
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3523442

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档