gpt4 book ai didi

c++ - 如何使用 CLOCK_REALTIME 使 clock_gettime 单调?

转载 作者:太空宇宙 更新时间:2023-11-04 11:08:40 27 4
gpt4 key购买 nike

CLOCK_REALTIME 的一个问题是它不是单调的,如果发生 NTP 同步,时间可能会倒退。

像下面这样的事情让它变得单调是否安全?

struct timespec GetMonotonicTime()
{
static struct timespec last = timespec();
struct timespec ts;
clock_gettime(CLOCK_REALTIME, &ts);
last.tv_nsec = (last.tv_sec == ts.tv_sec) ? std::max(last.tv_nsec, ts.tv_nsec) : ts.tv_nsec;
last.tv_sec = std::max(last.tv_sec, ts.tv_sec);

return last;
}

最佳答案

除了在多线程环境中运行时会出现问题之外,随着时间的推移,您的 ns 属性将逐渐变为 999999999。

Linux 提供 CLOCK_MONOTONIC 如果它恰好是您的平台(并且它会满足您的需求)。

关于c++ - 如何使用 CLOCK_REALTIME 使 clock_gettime 单调?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24166911/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com