在 Posix (Linux) 环境中长时间运行的服务器程序(用 C 语言构建)中:让 函数在 future 的特定时间执行的最佳方法是什么 ?它不需要在任何特定线程中执行,但执行时间的精度需要几毫秒。通用方法或特定代码表示赞赏。
最佳答案
GNU C 库 ( sys/timex.h
) 中有一些高分辨率时钟函数,因此虽然它们不是 POSIX,但它们将是可移植的 linux 智能。
High Accuracy Clock -- The GNU C Library
尽管这些函数不需要或使用任何 ntp 服务,但它们都带有前缀“ntp”,因此这种关系纯粹是表面的。
请注意,尽管粒度以微秒为单位,但 linux 内核的用户空间延迟为 10 毫秒,因此不要担心或期望比这更准确的信息。
一旦您拥有当前的高分辨率时间,您就可以计算持续时间并使用 (posix) nanosleep(但再次舍入为 10 毫秒)来设置延迟。还有一个 clock_nanosleep 可能很有趣。