SleepConditionVariableCS 函式 (synchapi.h)
在指定的條件變數上睡眠,並將指定的關鍵區段釋放為不可部分完成的作業。
語法
BOOL SleepConditionVariableCS(
[in, out] PCONDITION_VARIABLE ConditionVariable,
[in, out] PCRITICAL_SECTION CriticalSection,
[in] DWORD dwMilliseconds
);
參數
[in, out] ConditionVariable
條件變數的指標。 此變數必須使用 InitializeConditionVariable 函式 進行初始化。
[in, out] CriticalSection
重要區段物件的指標。 呼叫 SleepConditionVariableCS 時,呼叫端必須輸入此重要區段一次。
[in] dwMilliseconds
逾時間隔,以毫秒為單位。 如果逾時間隔經過,函式會重新取得關鍵區段並傳回零。 如果 dwMilliseconds 為零,函式會測試指定物件的狀態,並立即傳回。 如果 dwMilliseconds 是 INFINITE,函式的逾時間隔永遠不會經過。 如需詳細資訊,請參閱<備註>。
傳回值
如果函式成功,則傳回非零的值。
如果函式失敗或逾時間隔經過,則傳回值為零。 若要取得擴充的錯誤資訊,請呼叫 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 |