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 Server 2008 Windows Server 2008 R2) |
程式庫 | Kernel32.lib |
DLL | Kernel32.dll |