我正在尝试使用clock_gettime()
函数,我需要使用CLOCK_REALTIME
,因为我正在尝试同步多个设备。但是,当我向clock_gettime()
拨打大约10-20个电话时,我发现有些电话会消极。为什么会发生这种情况,我该怎么做才能克服它?根据我在互联网上阅读的内容,其中一个原因是因为处理器使用多个内核而且不同的内核不同步。是否仍然如此,或者是否存在导致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同步,并观察到时间仍然是负面的。我还能做些什么来克服这个问题?
答案 0 :(得分:0)
你不能假设CLOCK_REALTIME是单调的,或者设备的挂钟时间永远不会向前或向后跳跃。
有关详细信息,请参阅此答案: Difference between CLOCK_REALTIME and CLOCK_MONOTONIC?
可行的其他解决方案取决于您实际尝试解决的问题。