首页 > 解决方案 > 在没有 NtSetTimerResolution 的情况下增加 Windows 上的计时器分辨率(高分辨率)

问题描述

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

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

标签: c#c++winapitimer

解决方案


NtSetTimerResolution并且timeBeginPeriod可以增加计时器分辨率,但它们是系统范围的。如果有人有好主意,请告诉我。

我不建议你这样做。Google 已修改 Chrome 以仅在必要时增加计时器频率,这在大多数情况下都有效。

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


推荐阅读