7

这里有一个奇怪的问题——但是:

如果我在具有 20 分钟超时的互斥锁上使用 WaitForSingleObject。然后,机器在等待时进入睡眠模式(或休眠)...... 12 小时后醒来——我对 WaitForSingleObject 的调用会超时吗?或者计时器会随着机器睡眠而暂停?

4

3 回答 3

3

根据https://msdn.microsoft.com/en-us/library/windows/desktop/ms687032(v=vs.85).aspx, WaitForSingleObject 确实需要考虑在低功耗状态下花费的时间,但仅从Windows 8。所以在 Windows 7 上它应该像上面描述的那样运行,但在 Windows 8 和更高版本上,只有当系统已经在请求的时间内主动运行时,调用才会超时。

于 2017-05-12T08:50:08.870 回答
1

刚刚在 Windows 7 上进行了 5 分钟超时和 10 分钟睡眠的测试。我在等待无尽的线程。

惊喜 -WaitForSingleObject我的机器唤醒后超时。

于 2012-06-08T23:15:04.037 回答
1

摘自 MSDN:

Windows XP、Windows Server 2003、Windows Vista、Windows 7、Windows Server 2008 和 Windows Server 2008 R2:dwMilliseconds 值确实包括在低功耗状态下花费的时间。例如,当计算机处于睡眠状态时,超时确实会继续倒计时。

Windows 8、Windows Server 2012、Windows 8.1、Windows Server 2012 R2、Windows 10 和 Windows Server 2016:dwMilliseconds 值包括在低功耗状态下花费的时间。例如,当计算机处于睡眠状态时,超时不会继续倒计时。

于 2018-04-17T20:21:10.267 回答