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

제한 시간 간격(밀리초)입니다. 제한 시간 간격이 경과하면 함수는 중요한 섹션을 다시 획득하고 0을 반환합니다. dwMilliseconds가 0이면 함수는 지정된 개체의 상태를 테스트하고 즉시 반환합니다. dwMillisecondsINFINITE이면 함수의 제한 시간 간격이 경과하지 않습니다. 자세한 내용은 설명 부분을 참조하세요.

반환 값

함수가 성공하면 반환 값이 0이 아닙니다.

함수가 실패하거나 시간 제한 간격이 경과하면 반환 값은 0입니다. 확장 오류 정보를 가져오려면 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의 Windows.h 포함)
라이브러리 Kernel32.lib
DLL Kernel32.dll

참고 항목

조건 변수

동기화 함수

VBS Enclave에서 사용할 수 있는 Vertdll API