sleepConditionVariableSRW 函数 (synchapi.h)
在指定的条件变量上休眠,并将指定的锁作为原子操作释放。
语法
BOOL SleepConditionVariableSRW(
[in, out] PCONDITION_VARIABLE ConditionVariable,
[in, out] PSRWLOCK SRWLock,
[in] DWORD dwMilliseconds,
[in] ULONG Flags
);
参数
[in, out] ConditionVariable
指向条件变量的指针。 必须使用 InitializeConditionVariable 函数初始化此变量。
[in, out] SRWLock
指向锁的指针。 必须以 Flags 参数指定的方式保留此锁。
[in] dwMilliseconds
超时间隔(以毫秒为单位)。 如果间隔已过,函数将返回 。 如果 dwMilliseconds 为零,该函数将测试指定对象的状态并立即返回。 如果 dwMilliseconds 为 INFINITE,则函数的超时间隔永远不会经过。
[in] Flags
如果此参数 CONDITION_VARIABLE_LOCKMODE_SHARED,则 SRW 锁处于共享模式。 否则,锁处于独占模式。
返回值
如果该函数成功,则返回值为非零值。
如果该函数失败,则返回值为 0
。 要获得更多的错误信息,请调用 GetLastError。
如果超时过期,函数将返回 FALSE
, GetLastError 返回 ERROR_TIMEOUT。
注解
如果在调用此函数时锁定锁定,则函数行为未定义。
可以使用 WakeConditionVariable 或 WakeAllConditionVariable 函数唤醒线程。 线程被唤醒后,它会重新获取当线程进入休眠状态时释放的锁。
条件变量受到虚假唤醒的影响, (那些与显式唤醒) 无关的唤醒变量, (另一个线程设法在唤醒线程) 之前运行而被盗的唤醒。 因此,应在睡眠操作返回后,通常) 循环中 while
重新检查谓词 (。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows Vista [桌面应用 | UWP 应用] |
最低受支持的服务器 | Windows Server 2008 [桌面应用 | UWP 应用] |
目标平台 | Windows |
标头 | synchapi.h (包括 Windows 7 上的 Windows.h、Windows Server 2008 Windows Server 2008 R2) |
Library | Kernel32.lib |
DLL | Kernel32.dll |