使用单调时钟的绝对时间
Absolute time using monotonic clock
对于某些第三方库函数,它要求我向它传递一个使用绝对时间而不是相对时间的timespec
。
要做到这一点,我有:
struct timespec ts;
struct timespec now;
if (clock_gettime(CLOCK_REALTIME, &now) != 0)
{
printf("Error: ");
printf("%sn", strerror(errno));
}
tspec_add(&ts, &now, 5000); //ts = now + 5000ms.
//I pass ts to the library function.
功能运行良好。。但是,如果我使用CLOCK_MONOTONIC
或CLOCK_MONOTONIC_RAW
,它就不起作用。
我检查了错误(无)。功能成功,但输出的时间完全不同,而且非常非常小。它为tv.sec
打印了9005,但当使用CLOCK_REALTIME
时,它打印了一个巨大的数字(我假设是从epoch开始的时间)。
为什么会这样?我如何使用单调时钟来做同样的事情?
正如@IwillnotexistIdonotexist所暗示的那样,CLOCK_MONOTONIC没有指定的起点,您无法可靠地将单调时间转换为实时时间。
引用clock_MONOTONIC:的clock_gettime手册页
由于某些未指定起始点
唯一的限制是单调时间必须大于系统的正常运行时间(需要单调增加)。
我预计,自启动以来,大多数实现实际上只是时钟滴答声,但没有什么能保证这一点。
相关文章:
- 从文本文件中读取时钟时间和事件时间并进行处理
- 用时钟测量程序的运行时间
- 如何使用 CTIME/Chrono Libarey 将开始时间与系统时钟进行比较
- 如何在给定时钟偏移的情况下正确获取时间
- 使用时钟"storing"特定时间
- time_t的时钟周期和获取时间问题
- 如何在Vxworks中正确运行时钟获取时间以获得准确的时间
- c ++如何使运行时间显示在cmd上?作为运行时钟,需要更改系统("clear")?
- 不使用系统时钟进行时间测量
- C++ 实现时钟来测量执行时间
- 二叉搜索真的是在 0 时钟 CPU 时间内执行的吗?
- 使用单调时钟的绝对时间
- 如何在一段时间循环中使用时钟
- 使用设置系统时间调整重置时钟速率,而无需使用时间服务器
- 将高分辨率时钟时间转换为整数(Chrono)
- 时钟时间在 C++ 中未更新
- C++11如何打印出高分辨率时钟时间点
- 在特定的时钟时间执行功能
- 在linux中,与动态调用相关的时钟周期中程序的意外执行时间
- c++时钟测量时间不正确