1

来自 Windows 平台,我通常使用 Windows Multimedia Timer 来生成分辨率为 1 ms +-1ms 的周期性回调。所以我确实可以每秒产生 1000 个相当等距的回调。为了在不忙于等待的情况下达到此精度,MS 使用了高精度事件计时器,它直接访问硬件驱动程序。

我希望找到类似 boost 库之类的东西,以便为这些高精度计时器提供跨平台实现。但我发现的只是 Boost-ASIO 计时器。由于他们根本不谈论精度,我认为他们不会满足高精度的要求。10ms 的抖动会很大。

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

4

1 回答 1

0

没有任何实现可以保证整个宇宙(PC、xbox、android 手机……)的 1 毫秒分辨率。所有实现都必须依赖操作系统来提供此分辨率,并且操作系统需要硬件支持。实现通常提供对较低分辨率的回退,不同硬件上的操作系统也是如此。

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

于 2015-03-27T10:42:02.957 回答