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 為零,函式會測試指定物件的狀態,並立即傳回。 如果 dwMillisecondsINFINITE,函式的逾時間隔永遠不會經過。

[in] Flags

如果此參數 CONDITION_VARIABLE_LOCKMODE_SHARED,SRW 鎖定會處於共用模式。 否則,鎖定處於獨佔模式。

傳回值

如果函式成功,則傳回非零的值。

如果函式失敗,則傳回值為 0。 若要取得擴充的錯誤資訊,請呼叫 GetLastError

如果逾時過期,則函式會傳 FALSE 回 ,而 GetLastError 會傳回 ERROR_TIMEOUT

備註

如果呼叫此函式時鎖定鎖定,則未定義函式行為。

線程可以使用 WakeConditionVariableWakeAllConditionVariable 函式 來喚醒。 在線程喚醒之後,它會在線程進入睡眠狀態時重新取得釋放的鎖定。

條件變數受限於假性喚醒, (未與明確喚醒) 相關聯的喚醒和遭竊喚醒, (另一個線程管理在喚醒線程) 之前執行。 因此,您應該在睡眠作業傳回之後, 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

另請參閱

讀取器/寫入器 (SRW) 鎖定

同步處理函式

VBS 記憶體保護區中可用的 Vertdll API