4

在 Posix (Linux) 环境中长时间运行的服务器程序(用 C 语言构建)中:让函数在未来特定时间执行的最佳方法是什么?它不需要在任何特定线程中执行,但执行时间的精度需要几毫秒。通用方法或特定代码表示赞赏。

4

2 回答 2

1

GNU C 库 ( ) 中有一些高分辨率时钟函数sys/timex.h,因此虽然它们不是 POSIX,但它们将是可移植的 linux 明智的。

高精度时钟——GNU C 库

尽管这些函数不需要或不使用任何 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 回答