如何使clock_gettime使用CLOCK_REALTIME单调
How to make clock_gettime using CLOCK_REALTIME monotonic?
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
,如果这恰好是您的平台(并且它将满足您的需求)。
相关文章:
- 使用 SendInput 或 mouse_event 不适用于 clock()?
- 为什么我们可以在 c++ 中使用 srand(clock())?
- 除了使用 clock() 函数之外,有没有更好的方法来以给定的频率生成/发布数据
- IBM AIX std::clock()?
- 为什么常量CLOCKS_PER_SEC不需要用 std:: 命名,但 <ctime> clock() 和 clock_t 可以呢?
- 当我使用 cin 时,我如何使用 clock() 测量时间
- 'clock()' 给出通常的时钟而不是 CPU 时钟
- 使用Clock()函数测量程序的运行时间
- 为什么我的sf :: clock在sfml中单独重置
- C++:Linux 中的计时(使用 clock())不同步(由于 OpenMP?)
- 如何在Linux上获得C 代码块的时钟刻度?clock()结果没有意义
- clock :: getElapSedTime()被调用时SFML 2.0崩溃
- 为什么在使用基于 clock() 的计时器宏时会得到负值
- clock() 函数始终返回 0
- 使用 clock() 函数调度任务时出现问题
- C++ VMWare Fusion/Boot Camp 下 VS2010 中 ctime 的 clock() 方法出现问题
- 为什么clock()被认为是坏的
- MFC/C++:需要遥远的"wall clock"时间而不重置系统的时间
- c++ 中的 clock() 时间和 java 中的 System.CurrentTimeMillis() 之间的时间差
- 为什么使用 clock() 在测量 CPU 时间时得到减号