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

傳回值

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

如果函式失敗或逾時間隔經過,則傳回值為零。 若要取得擴充的錯誤資訊,請呼叫 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

另請參閱

條件變數

同步處理函式

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