1

有没有办法在不使用系统时钟的情况下测量 linux/unix 中的经过时间?问题是系统时钟在某些情况下会发生变化,并且由timegettimeofday其他类似的东西测量的经过时间会给出不正确的结果。

我正在考虑创建单独的线程,该线程在sleep(100)内部执行循环并计算重复次数。

有更好的解决方案吗?

4

4 回答 4

6

std::chrono::steady_clock可用于测量时间,并考虑系统时钟的变化。

于 2014-01-02T16:12:54.120 回答
4

使用单调时间,表示从某个时间点开始的时间:http: //linux.die.net/man/3/clock_gettime

int64_t get_monotonic_timestamp(void)
{
    struct timespec ts;
    clock_gettime(CLOCK_MONOTONIC, &ts);
    return (int64_t)ts.tv_sec * 1000000 + ts.tv_nsec / 1000;
}
于 2014-01-02T16:13:34.007 回答
2

用(或变体)测量经过的时间sleep是一个坏主意。您的线程可以在经过睡眠时间后随时唤醒,因此这肯定是不准确的。

于 2014-01-02T16:08:42.270 回答
1

对于时间延迟,您可以使用例如select.

于 2014-01-02T16:09:23.730 回答