在 Posix (Linux) 环境中长时间运行的服务器程序(用 C 语言构建)中:让函数在未来特定时间执行的最佳方法是什么?它不需要在任何特定线程中执行,但执行时间的精度需要几毫秒。通用方法或特定代码表示赞赏。
问问题
214 次
2 回答
1
GNU C 库 ( ) 中有一些高分辨率时钟函数sys/timex.h
,因此虽然它们不是 POSIX,但它们将是可移植的 linux 明智的。
尽管这些函数不需要或不使用任何 ntp 服务,但这些函数都以“ntp”为前缀,因此这种关系纯粹是肤浅的。
请注意,虽然粒度以微秒为单位,但 linux 内核的用户空间延迟为 10 毫秒,因此不要打扰或期望比这更准确的任何东西。
获得当前高分辨率时间后,您可以计算持续时间并使用 (posix) nanosleep(但同样,舍入到 10 毫秒)来设置延迟。还有一个可能感兴趣的clock_nanosleep 。
于 2013-03-11T15:49:05.250 回答
0
您应该查找posix timers。它为您提供了一个简单的界面来安排未来的工作。您可以管理它以在 x 秒/纳秒内向您发送信号(然后您可以将您的函数作为信号处理程序)。查找 timer_create
于 2019-02-02T10:21:14.003 回答