我有一个程序需要每 X 秒执行一次以写入一些输出。该程序将在每个输出之间进行一些间歇性轮询和处理。因此,例如,我可能每 5 秒输出一次,但我每 0.1 秒醒来一次轮询一次,直到达到下一个 5 秒标记。理论上,该程序将在重新启动之间运行数月,甚至可能更长。
我需要每 X 秒执行一次,以保持与挂钟一致。换句话说,我不能让时钟漂移导致我偏离 X 秒标记。在间歇轮询中,我不需要完全相同级别的准确度,但我想更频繁地轮询一秒钟,所以我需要一个可以表示亚秒级精度的结构。
我意识到,由于在操作系统上运行的本质,任何计时器的执行都会存在一定的不一致/延迟,因此我无法保证我将在每x 秒内执行一次。但这很好,只要它保持一个小的正态分布,我不想要的是漂移让时间不断地越来越远。
我还希望尽量减少轮询的 CPU 成本,但这是次要问题。
有哪些可用于 Linux 的时序结构可以最好地为我提供这种级别的精确度?由于分发的麻烦,我试图避免在应用程序中包含提升,但如果必须的话可以使用它。所以首选使用标准 c++ 库的方法,但如果 Bosst 可以做得更好,我也想知道这一点。
谢谢你。
-ps,我不能使用 c++11。这不是一个选项,所以我无法使用它的任何构造。