提问者:小点点

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


在Windows平台上,我通常使用Windows多媒体计时器产生分辨率为1ms+-1ms的周期性回调。所以我确实可以每秒产生1000个相当等距的回调。为了在不忙等待的情况下实现这一精度,MS使用了高精度事件定时器,它直接访问硬件驱动程序。

我希望找到一些类似于boost库之类的东西,为这类高精度定时器提供跨平台的实现。但我只找到了Boost-ASIO计时器。因为他们根本不谈精度,所以我认为他们不能满足高精度的要求。10ms的抖动就太大了。

所以。。是否有类似于跨平台实现高精度事件计时器的东西?或者Boost-ASIO已经足够精确了?也许Boost内部使用HPET,只是没有在任何地方提到它。


共1个答案

匿名用户

没有一个实现可以保证在整个宇宙中(PC,xbox,android手机等)都有1ms的分辨率。所有的实现都必须依赖于操作系统来提供这种分辨率,而操作系统需要硬件支持。实现通常提供更低分辨率的后退,不同硬件上的OSE也是如此。

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

相关问题


MySQL Query : SELECT * FROM v9_ask_question WHERE 1=1 AND question regexp '(跨|平台|c++|高精度|事件|定时器)' ORDER BY qid DESC LIMIT 20
MySQL Error : Got error 'repetition-operator operand invalid' from regexp
MySQL Errno : 1139
Message : Got error 'repetition-operator operand invalid' from regexp
Need Help?