c++ - linux 使用 clock_nanosleep 休眠

标签 c++ sleep clock

我想使用 clock_nanosleep 等待 1 微秒。据我所知,我必须给出一个绝对时间作为输入。在这种情况下,以下代码可以吗?

deadline.tv_sec = 0;
deadline.tv_nsec = 1000;

clock_nanosleep(CLOCK_REALTIME, TIMER_ABSTIME, &deadline, NULL);

最佳答案

您的 deadline tv 不是绝对时间。要形成绝对时间,请使用 clock_gettime() ( http://linux.die.net/man/3/clock_gettime ) 获取当前时间,然后添加您的 sleep 间隔。

struct timespec deadline;
clock_gettime(CLOCK_MONOTONIC, &deadline);

// Add the time you want to sleep
deadline.tv_nsec += 1000;

// Normalize the time to account for the second boundary
if(deadline.tv_nsec >= 1000000000) {
    deadline.tv_nsec -= 1000000000;
    deadline.tv_sec++;
}
clock_nanosleep(CLOCK_MONOTONIC, TIMER_ABSTIME, &deadline, NULL);

请注意,我使用的是 CLOCK_MONOTONIC 而不是 CLOCK_REALTIME。您实际上并不关心现在几点,您只希望时钟保持一致。

关于c++ - linux 使用 clock_nanosleep 休眠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20332382/

相关文章:

c++ - 生成文件 |对头文件中包含的另一个头文件的依赖

c++ - 如果使用预定义的 map ,重建项目需要非常长的时间?

c++ - SetSuspendState() API 在 Win8 中永远不会返回

sql-server - T-SQL 中的 sleep 命令?

C++ 在 Linux 上获取毫秒时间——clock() 似乎不能正常工作

c++ - 为什么共享锁只能持有一把可升级锁

C++ 虚拟继承和构造函数

c 每n秒检查一次信号

ios - 实时应用程序图标,如 iOS 7 时钟

c - 使用 clock() 确定函数的运行时间