假设默认计时器分辨率为15ms。鉴于这种情况:
Process A calls timeBeginPeriod(1);
Now timer resolution is 1ms.
Process B calls timeBeginPeriod(2);
Now timer resolution is 2ms.
Process B calls timeEndPeriod(2);
那么计时器分辨率是多少?它会回落到1或15毫秒吗?
让我们稍微修改一下场景:
Process A calls timeBeginPeriod(1);
Now timer resolution is 1ms.
Process B calls timeBeginPeriod(2);
Now timer resolution is 2ms.
Process A calls timeEndPeriod(1);
现在什么是计时器分辨率?在进程B调用timeEndPeriod(2)之前它是否保持2ms?
答案 0 :(得分:3)
来自MSDN:
Windows使用任何进程请求的最低值(即最高分辨率)。
假设您的流程是唯一可以调用timeBeginPeriod()
的流程,那么:
问:什么是计时器分辨率呢?它会回落到1或15毫秒吗?
它没有改变,因为1毫秒(过程A需要的)是最低分辨率(然后是应用的分辨率)。所以答案是:它是1毫秒,当进程B发出请求时它没有改变,因为它是一个全局设置,然后应用了最严格(最低)的一个。
问:现在什么是计时器分辨率?在进程B调用timeEndPeriod(2)之前它是否保持2ms?
是的,因为现在所需的最低分辨率是2毫秒,所以系统会在调用timeEndPeriod(2)
之前尊重该请求。