在Windows上提高计时器分辨率(高分辨率)而不使用NtSetTimerResolution

4
我正在寻找一种比Windows默认的约15毫秒更高分辨率的定时器。我不需要用于时间测量的定时器,而是需要一个能够等待X毫秒(或每X毫秒调用一个事件)的定时器。我知道可以使用NtSetTimerResolution更改Windows计时器分辨率,但这会影响所有应用程序(我不想要这个)。我不需要太高精度,所以如果我要求2毫秒,那么1.5毫秒和2.5毫秒也可以接受。

使用微调器可以工作,但这显然会导致CPU使用率过高。欢迎有创意的想法,只要能完成任务即可。


1
你试过使用std::chrono么? - Alan Birtles
1
哪个问题影响了每个应用程序? 它不会影响计时器持续时间本身,只会影响最小分辨率。 - Federico
请选择一种语言,C++和C#的答案非常不同。 - Alan Birtles
@AlanBirtles 我同时拥有C++和C#,因为它们对我来说都很好,唯一的要求是它应该支持Windows。 - The Cookies Dog
正确,它是作为 Windows 服务运行的永久性检查。 - The Cookies Dog
显示剩余7条评论
1个回答

0

NtSetTimerResolutiontimeBeginPeriod 可以增加计时器的分辨率,但它们是系统范围内的。如果有好的想法,请告诉我。

我不建议你这样做。谷歌已经修改了 Chrome,仅在必要时增加计时器的频率,这在大多数情况下都能正常工作。

Windows 上的默认计时器分辨率为 15.6 毫秒,计时器每秒中断 64 次。随着程序增加计时器频率,它们会增加功耗并降低电池寿命。它们还浪费了比我预期更多的计算能力 – 它们会减慢您的计算机!由于这些问题,微软多年来一直告诉开发人员不要增加计时器频率。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接