如何使应用程序适应clock_settime

时间:2011-03-29 12:58:06

标签: c date time posix usleep

使用usleep调用来调整应用程序(在Linux 2.6.31上运行)。但是,它似乎无法适应日期更改(使用shell中的date或使用其他进程中的clock_settime)。 什么是正确的做法,以避免应用程序被锁定?

EDIT1

假设应用程序想要每100毫秒做一些事情。当作业完成时,它会调用gettimeofday,并推断剩余的ms要睡眠,直到下一个100ms切片,然后它会调用usleep。

1 个答案:

答案 0 :(得分:2)

如果您必须确定时间间隔,而不是当前日期/时间,则必须使用此电话:

struct timespec tim;
uint64_t microsec;

clock_gettime(CLOCK_MONOTONIC,& tim);
microsec = 1000000ULL * tim.tv_sec + tim.tv_nsec / 1000;

这是您的系统正常运行时间,真正的完整“硬件”时间(无法修改)。

关于您的定期例程,您可以使用alarm()和setitimer()设置周期性处理程序。

相关问题