共用方式為


SleepConditionVariableCS 函式 (synchapi.h)

在指定的條件變數上休眠,並將指定的重要區段釋放為不可部分完成作業。

語法

BOOL SleepConditionVariableCS(
  [in, out] PCONDITION_VARIABLE ConditionVariable,
  [in, out] PCRITICAL_SECTION   CriticalSection,
  [in]      DWORD               dwMilliseconds
);

參數

[in, out] ConditionVariable

條件變數的指標。 此變數必須藉由呼叫 InitializeConditionVariable (以動態初始化結構) 或將常數CONDITION_VARIABLE_INIT指派給結構變數 (以靜態初始化結構) 來初始化。

[in, out] CriticalSection

重要區段物件的指標。 呼叫端必須在呼叫 SleepConditionVariableCS 時輸入此重要區段一次。

[in] dwMilliseconds

逾時間隔 (以毫秒為單位)。 如果逾時間隔過去,函式會重新取得重要區段,並傳回零。 如果 dwMilliseconds 為零,函式會測試指定物件的狀態,並立即傳回。 如果 dwMillisecondsINFINITE,則函式的逾時間隔永遠不會過去。 如需詳細資訊,請參閱<備註>。

返回值

如果函式成功,傳回值會為非零。

如果函式失敗或逾時間隔已過,則傳回值為零。 若要取得擴充的錯誤資訊,請呼叫 GetLastError。 可能的錯誤碼包括 ERROR_TIMEOUT,這表示在另一個執行緒嘗試喚醒睡眠執行緒之前,逾時間隔已經過去。

備註

在指定的逾時間隔經過之前,可以使用 WakeConditionVariableWakeAllConditionVariable 函式喚醒在條件變數上休眠的執行緒。 在此情況下,執行緒會在喚醒處理完成時喚醒,而不是在其逾時間隔過去時喚醒。 執行緒喚醒之後,它會重新取得執行緒進入睡眠狀態時釋放的重要區段。

條件變數會受到虛假喚醒 (與明確喚醒無關的喚醒) 和竊取喚醒 (另一個執行緒設法在喚醒執行緒之前執行) 的影響。 因此,您應該在睡眠作業傳回之後重新檢查述詞 (通常在迴圈中 while )。

範例

如需使用此函數的範例,請參閱 使用條件變數

需求

Requirement 價值觀
最低支援的用戶端 Windows Vista [傳統型應用程式 |UWP 應用程式]
支援的最低伺服器 Windows Server 2008 [傳統型應用程式 |UWP 應用程式]
目標平臺 窗戶
Header synchapi.h (包括 Windows 7、Windows Server 2008、Windows Server 2008 R2 上的 Windows.h)
Library Kernel32.lib
DLL Kernel32.dll

另請參閱

條件變數

同步處理函式

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