지정된 조건 변수에서 절전 모드로 이동하고 지정된 중요 섹션을 원자성 연산으로 해제합니다.
Syntax
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
시간 제한 간격(밀리초)입니다. 제한 시간 간격이 경과하면 함수는 중요 섹션을 다시 획득하고 0을 반환합니다. dwMilliseconds가 0이면 함수는 지정된 개체의 상태를 테스트하고 즉시 반환합니다. dwMilliseconds가 INFINITE이면 함수의 제한 시간 간격이 경과하지 않습니다. 자세한 내용은 설명 부분을 참조하세요.
반환 값
함수가 성공하면 반환 값은 0이 아닌 값입니다.
함수가 실패하거나 시간 제한 간격이 경과하면 반환 값은 0입니다. 확장 오류 정보를 얻으려면 GetLastError호출합니다. 가능한 오류 코드에는 다른 스레드가 절전 모드 스레드를 절전 모드 해제하기 전에 시간 제한 간격이 경과했음을 나타내는 ERROR_TIMEOUT 포함됩니다.
비고
WakeConditionVariable 또는 WakeAllConditionVariable 함수를 사용하여 지정된 시간 제한 간격이 경과하기 전에 조건 변수에서 절전 모드로 전환되는 스레드를 해제할 수 있습니다. 이 경우 스레드는 절식 처리가 완료되고 제한 시간 간격이 경과할 때가 아니라 절식 처리가 완료되면 해제됩니다. 스레드가 절전 모드로 전환되면 스레드가 절전 모드로 전환될 때 해제된 중요한 섹션을 다시 획득합니다.
조건 변수는 가짜 절전 모드 해제(명시적 절전 모드 해제와 연결되지 않음) 및 도난당한 절전 모드 해제(다른 스레드가 절전 모드 해제 전에 실행되도록 관리됨)의 영향을 받습니다. 따라서 절전 작업이 반환된 후 조건자(일반적으로 while 루프)를 다시 확인해야 합니다.
예시
이 함수를 사용하는 예제는 조건 변수 사용을 참조하세요.
요구 사항
| 요구 사항 | 가치 |
|---|---|
| 지원되는 최소 클라이언트 | 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 |
참고하십시오
동기화 함수