PulseEvent 함수(winbase.h)

지정된 이벤트 개체를 신호 상태로 설정한 다음 적절한 대기 스레드 수를 해제한 후 서명되지 않은 상태로 다시 설정합니다.

참고 이 함수는 신뢰할 수 없으며 사용하면 안 됩니다. 주로 이전 버전과의 호환성을 위해 존재합니다. 자세한 내용은 설명 부분을 참조하세요.
 

구문

BOOL PulseEvent(
  [in] HANDLE hEvent
);

매개 변수

[in] hEvent

이벤트 개체에 대한 핸들입니다. CreateEvent 또는 OpenEvent 함수는 이 핸들을 반환합니다.

핸들에는 EVENT_MODIFY_STATE 액세스 권한이 있어야 합니다. 자세한 내용은 동기화 개체 보안 및 액세스 권한을 참조하세요.

반환 값

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

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

설명

동기화 개체에서 대기 중인 스레드는 커널 모드 APC에 의해 대기 상태에서 잠시 제거된 다음 APC가 완료된 후 대기 상태로 돌아갈 수 있습니다. PulseEvent에 대한 호출이 대기 상태에서 스레드가 제거된 시간 동안 발생하는 경우 PulseEvent는 호출되는 시점에 대기 중인 스레드만 해제하므로 스레드가 해제되지 않습니다. 따라서 PulseEvent 는 신뢰할 수 없으며 새 애플리케이션에서 사용하면 안 됩니다. 대신 조건 변수를 사용합니다.

수동 재설정 이벤트 개체의 경우 즉시 해제할 수 있는 모든 대기 스레드가 해제됩니다. 그런 다음 함수는 이벤트 개체의 상태를 부호 없는 상태로 다시 설정하고 를 반환합니다.

자동 재설정 이벤트 개체의 경우 함수는 상태를 부호 없는 상태로 다시 설정하고 여러 스레드가 대기 중인 경우에도 단일 대기 스레드를 해제한 후 를 반환합니다.

대기 중인 스레드가 없거나 스레드를 즉시 해제할 수 없는 경우 PulseEvent 는 이벤트 개체의 상태를 서명되지 않음으로 설정하고 를 반환합니다.

다중 개체 대기 함수 를 사용하는 스레드가 지정된 모든 개체가 신호를 받을 때까지 기다리는 경우 PulseEvent 는 이벤트 개체의 상태를 신호로 설정하고 대기 함수가 반환되지 않고 서명되지 않은 상태로 다시 설정할 수 있습니다. 지정된 모든 개체가 동시에 신호를 받지 않는 경우 이 오류가 발생합니다.

여러 스레드 간에 이러한 API를 사용하면 애플리케이션이 교착 상태에 빠질 수 있으므로 Windows 7에서 SignalObjectAndWaitPulseEvent 를 사용할 때는 주의해야 합니다. SignalObjectAndWait에서 신호를 받는 스레드는 PulseEvent를 호출하여 SignalObjectAndWait 호출의 대기 개체에 신호를 보냅니다. 경우에 따라 SignalObjectAndWait 호출자가 대기 중인 개체의 신호 상태를 수신할 수 없어 교착 상태가 발생합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows XP [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2003 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 winbase.h(Windows.h 포함)
라이브러리 Kernel32.lib
DLL Kernel32.dll

참고 항목

CreateEvent

이벤트 개체

OpenEvent

ResetEvent

SetEvent

동기화 함수