在将来调用功能

时间:2013-03-11 15:20:37

标签: c linux gcc posix

在Posix(Linux)环境中长期运行的服务器程序(内置于C)中:在将来的某个特定时间执行功能的最佳方法是什么??它不需要在任何特定线程中执行,但执行时间的准确性需要几毫秒。一般方法或特定代码表示赞赏。

2 个答案:

答案 0 :(得分:1)

GNU C库中有一些高分辨率的时钟函数(sys/timex.h),所以虽然它们不是POSIX,但它们将是Linux的便携式。

High Accuracy Clock -- The GNU C Library

这些函数以“ntp”为前缀,尽管它们不需要或使用任何ntp服务,因此这种关系纯粹是肤浅的。

请注意,虽然粒度是以微秒为单位,但Linux内核的用户空间延迟为10毫秒,所以不要打扰或期望任何更准确的事情。

一旦你有了当前的高分辨率时间,你就可以计算一个持续时间并使用(posix)nanosleep(但再次,舍入到10ms)来设置延迟。还有一个可能感兴趣的clock_nanosleep

答案 1 :(得分:0)

您应该查找posix计时器。它为您提供了一个安排未来工作的简单界面。您可以对其进行管理,以x秒/纳秒的速度向您发送信号(然后您可以将函数用作信号处理程序)。查找timer_create