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