在Windows平台上,我通常使用Windows多媒体计时器产生分辨率为1ms+-1ms的周期性回调。所以我确实可以每秒产生1000个相当等距的回调。为了在不忙等待的情况下实现这一精度,MS使用了高精度事件定时器,它直接访问硬件驱动程序。
我希望找到一些类似于boost库之类的东西,为这类高精度定时器提供跨平台的实现。但我只找到了Boost-ASIO计时器。因为他们根本不谈精度,所以我认为他们不能满足高精度的要求。10ms的抖动就太大了。
所以。。是否有类似于跨平台实现高精度事件计时器的东西?或者Boost-ASIO已经足够精确了?也许Boost内部使用HPET,只是没有在任何地方提到它。
没有一个实现可以保证在整个宇宙中(PC,xbox,android手机等)都有1ms的分辨率。所有的实现都必须依赖于操作系统来提供这种分辨率,而操作系统需要硬件支持。实现通常提供更低分辨率的后退,不同硬件上的OSE也是如此。
Boost(和新的C++标准)提供了通用接口,但不能保证1ms。它们提供了您在特定平台上所能获得的最好结果。您可以在运行时获取有关解析的信息并拒绝运行。