linux - clock_gettime 在 android 上不是单调的

标签 linux performance time android-ndk embedded-linux

我正在尝试使用 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/

相关文章:

java - 如何在 android 中获得两个日期之间的差异?,尝试所有事情并发布

linux - 检查 UNIX 目录中是否存在两个文件

Python:在一个简单的字符串中获取最新的日期时间

linux - 获取失败....哈希和不匹配

mysql - MySQL 创建函数索引

database - SQL Server 2008 CPU 使用率高

java - neo4j Java API getRelationships 方法的时间复杂度

java - 无法从java中的日期中减去天数

linux - 分割逗号集文件

linux - 普通 block 设备上的类似 LVM 的快照