다음을 통해 공유


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가 0이면 함수는 지정된 개체의 상태를 테스트하고 즉시 반환합니다. dwMillisecondsINFINITE이면 함수의 제한 시간 간격이 경과하지 않습니다.

[in] Flags

이 매개 변수가 CONDITION_VARIABLE_LOCKMODE_SHARED 경우 SRW 잠금은 공유 모드에 있습니다. 그렇지 않으면 잠금이 배타적 모드입니다.

반환 값

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

함수가 실패하면 반환 값은 입니다 0. 확장 오류 정보를 가져오려면 GetLastError를 호출합니다.

시간 제한이 만료되면 함수는 를 반환 FALSE 하고 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

참고 항목

슬림 판독기/작성기(SRW) 잠금

동기화 함수

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