跨平台C ++高精度事件定时器实现

时间:2015-03-25 16:55:23

标签: c++ timer cross-platform boost-asio periodic-processing

来自Windows平台我经常使用Windows多媒体计时器来产生分辨率为1 ms + -1ms的定期回调。所以我确实可以每秒产生1000个相当等距的回调。 为了达到这个准确度,没有做繁忙等待的MS使用High Precision Event Timer,它直接访问硬件驱动程序。

我希望找到像升级库这样的东西,为这些高精度定时器提供跨平台实现。但我发现的只是Boost-ASIO定时器。由于他们根本不谈精度,我认为他们不能满足高精度的要求。抖动10毫秒就可以了。

那么..是否有类似高精度事件计时器的跨平台实现? 或者Boost-ASIO可能已经足够精确了吗?也许Boost在内部使用HPET,并没有在任何地方提及它。

1 个答案:

答案 0 :(得分:0)

没有任何实现可以保证整个Universe(PC,xbox,android手机......)的分辨率为1ms。所有实现都必须依靠操作系统来提供此解决方案,操作系统需要硬件支持。实现通常会提供较低分辨率的后备,而不同HW上的操作系统也是如此。

Boost(和新的C ++标准)提供了通用接口,但不能保证1ms。它们提供了在特定平台上获得的最佳效果。您可以在运行时获取有关解决方案的信息并拒绝运行。