有没有办法在不使用系统时钟的情况下测量linux / unix中的经过时间?
问题是系统时钟在某些情况下会发生变化,而time
或gettimeofday
或其他类似情况会导致经过的时间变得不正确。
我正在考虑创建单独的线程,该线程在内部执行sleep(100)
循环并计算重复次数。
有更好的解决方案吗?
答案 0 :(得分:6)
std::chrono::steady_clock可用于衡量时间,并考虑系统时钟的变化。
答案 1 :(得分: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;
}
答案 2 :(得分:2)
使用sleep
(或变体)测量经过的时间是一个坏主意。在经过的休眠时间之后,你的线程可以随时醒来,所以这肯定是不准确的。
答案 3 :(得分:1)
对于延时,您可以使用例如select