2

应用程序(在 linux 2.6.31 上运行)使用usleep调用来控制节奏。但是,它看起来对日期更改没有弹性(date从外壳使用或clock_settime从另一个进程使用)。避免应用程序被锁定的正确做法是什么?

编辑1

假设应用程序想要每 100 毫秒执行一次操作。当工作完成时,它调用gettimeofday,并推断剩余的ms休眠直到下一个100ms切片,然后它调用usleep。

4

1 回答 1

2

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

结构 timespec tim;
uint64_t 微秒;

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

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

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

于 2011-03-29T13:18:40.703 回答