我正在尝试使用 clock_gettime()
函数并且我需要使用 CLOCK_REALTIME
因为我正在尝试同步多个设备。但是当我对 clock_gettime()
进行大约 10-20 次调用时,我观察到其中一些变为负数。为什么会发生这种情况,我该怎么做才能克服它?根据我在 Internet 上阅读的内容,发生这种情况的原因之一是因为处理器使用多个内核并且不同的内核不同步。这仍然是这种情况还是可能有其他一些因素导致 clock_gettime()
返回不稳定的值。我看过这些clock_gettime() still not monotonic - alternatives?和 Linux clock_gettime(CLOCK_MONOTONIC) strange non-monotonic behavior以及Why is clock_gettime so erratic? .但是我不能使用 CLOCK_MONOTONIC 或 CLOCK_MONOTONIC_RAW。我需要使用 CLOCK_REALTIME。在执行这些实验时,我还关闭了 NTP 同步,并观察到时间仍然会变为负值。我还能做些什么来克服这个问题?
最佳答案
您不能假设 CLOCK_REALTIME 是单调的,或者您设备的挂钟时间永远不会向前或向后跳跃。
有关详细信息,请参阅此答案: Difference between CLOCK_REALTIME and CLOCK_MONOTONIC?
其他可行的解决方案取决于您实际要解决的问题。
关于linux - clock_gettime 在 android 上不是单调的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24463690/