“机器睡眠”+ WaitForSingleObject +有限超时

时间:2012-05-09 06:36:27

标签: winapi mutex waitforsingleobject

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

如果我在互斥锁上使用WaitForSingleObject并超时20分钟。然后,机器在等待的同时进入睡眠模式(或休眠).... 12小时后唤醒 - 我的WaitForSingleObject调用是否会超时?或者计时器是否会在机器休眠时暂停?

3 个答案:

答案 0 :(得分:2)

根据https://msdn.microsoft.com/en-us/library/windows/desktop/ms687032(v=vs.85).aspx,WaitForSingleObject确实需要花费在低功耗状态上的时间,但仅从Windows 8开始。因此在Windows 7上它应该如上所述,但在Windows 8及更高版本上调用只有当系统在所需的时间内主动运行时才会超时。

答案 1 :(得分:1)

刚刚在Windows 7上测试,超时5分钟,睡眠时间10分钟。我在等待无尽的线索。

惊喜 - 我的机器醒来后,WaitForSingleObject超时了。

答案 2 :(得分:0)

摘自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值包括在低功耗状态下花费的时间。例如,在计算机处于睡眠状态时,超时不会继续倒计时。