一尘不染

Linux clock_gettime(CLOCK_MONOTONIC)奇怪的非单调行为

linux

伙计们,在我的应用程序clock_gettime(CLOCK_MONOTONIC)中,为了测量帧之间的增量时间(gamedev中的一种典型方法),我不时遇到一种奇怪的行为clock_gettime(..)-返回值有时不是单调的(即上次时间)
是更大的 比目前的时间)。

当前,如果发生这样的悖论,我只是跳过当前帧并开始处理下一个帧。

问题是,这怎么可能呢?这是Linux POSIX实现中的错误clock_gettime吗?我正在使用Ubuntu Server Edition
10.04(内核2.6.32-24,x86_64),gcc-4.4.3。


阅读 1777

收藏
2020-06-02

共1个答案

一尘不染

man clock_gettime 说:

CLOCK_MONOTONIC_RAW (从Linux 2.6.28开始;特定于Linux)

与CLOCK_MONOTONIC相似,但是可以访问不受NTP调整的基于硬件的原始时间。

由于CLOCK_MONOTONIC_RAW不是NTP调整的主题,我想CLOCK_MONOTONIC可能是。

我们对带有2.6.18内核和某些特定Itanium处理器的Redhat Enterprise
5.0遇到了类似的问题。我们无法在同一OS上与其他处理器一起复制它。它已在RHEL 5.3中用较新的内核和一些Redhat补丁修复。

2020-06-02