除了使用 clock() 函数之外,有没有更好的方法来以给定的频率生成/发布数据



我必须以1Hz的频率生成和发布数据(作为协议缓冲区消息(,我一直在考虑将其粘贴到带有clock((函数的while循环中的替代方案。也许我想太多了这个问题,但关于这个问题的任何建议将不胜感激,谢谢

有很多方法可以定期调用函数。哪一个最好取决于程序的情况和需求。没有单一的"最佳方法"。

几种可能性(还有更多(:

每次循环坐一圈,睡一段时间。简单,易于理解。但很少是最好的解决方案,因为睡觉时不会发生其他事情。

坐在循环中等待某个事件发生。就像一个计时器事件。在每个事件到达时对其进行处理 - 如果时间不够,请忽略该事件(也许(。

设置一个带有回调函数的计时器,该函数将定期调用该函数。

如果你的间隔非常小,那么也许在一个循环中旋转/忙碌等待,每次在循环中检查经过的时间,并在经过足够的时间时做一些事情(很少是一个好主意,因为它会消耗大量的 CPU 时间什么都不做,但有时这是正确的选择(。

最新更新