gpt4 book ai didi

c++ - 使用单调时钟的绝对时间

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:36:42 66 4
gpt4 key购买 nike

对于某些第 3 方库函数,它要求我向其传递一个使用绝对时间而非相对时间的 timespec

为此我有:

struct timespec ts;
struct timespec now;
if (clock_gettime(CLOCK_REALTIME, &now) != 0)
{
printf("Error: ");
printf("%s\n", strerror(errno));
}
tspec_add(&ts, &now, 5000); //ts = now + 5000ms.

//I pass ts to the library function.

而且这些函数工作正常。但是,如果我使用 CLOCK_MONOTONICCLOCK_MONOTONIC_RAW 它不起作用。

我检查了错误(没有发生)。功能成功但它输出的时间完全不同并且非常非常小。它为 tv.sec 打印了 9005,但是当使用 CLOCK_REALTIME 时,它打印了一个巨大的数字(我假设时间从纪元开始)。

这是为什么?我怎样才能使用单调时钟来做同样的事情?

最佳答案

正如@IwillnotexistIdonotexist 所暗示的,CLOCK_MONOTONIC 没有指定的起点,您无法可靠地将单调时间转换为实时时间。

引用clock_gettime manpage ,对于 CLOCK_MONOTONIC:

Clock that cannot be set and represents monotonic time since some unspecified starting point

唯一的限制是 MONOTONIC 时间必须大于系统的正常运行时间(这是单调递增所必需的)。

我希望大多数实现确实只是启动后的时钟滴答,但没有任何保证。

关于c++ - 使用单调时钟的绝对时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28823887/

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