상세 컨텐츠

본문 제목

CEvent::SetEvent, PulseEnvet의 차이...(전문적인 글 아님. )

전문적인 이야기

by 미라세티928 2024. 6. 4. 10:55

본문

1. 기본적으로 CEvent를 선언

1-2. SetEvent를 하게되면, 
WaitForSingleObject함수에서 대기하고 있던 쓰레드 중 하나가, 시퀀스를 실행하게 된다.
그리고 해당 변수는 자동적으로 비신호 상태로 변하게 된다. 

1-3. PulseEvent를 하게되면, 
위의 "2번"과 동일한 동작을 수행한다. 

즉 일반적인 상황에선 SetEvent와 PulseEvent의 동작은 동일하게 동작한다. 

2. 다만 CEvent변수를 선언할때,
CEvent g_eventStart(0, TRUE); (BOOL bManualReset = TRUE)같이 선언하게 되면, 

2-2. SetEvent를 하게되면, 
이벤트가 리셋되지 않고, 대기중인 모든 쓰레드가 실행

1-3. PulseEvent를 하게되면,
WaitForSingleObject함수에서 대기하고 있던 쓰레드 중 하나가, 시퀀스를 실행하게 된다.
그리고 해당 변수는 자동적으로 비신호 상태로 변하게 된다. 

추가정리하면, bManualReset = TRUE인 상황에선 PulseEvent만 한개의 쓰래드만 동작 후에 리셋을 해준다. 

즉 bManualReset = TRUE인 상황에서만 SetEvent와 PulseEvent동작이 차이가 발생한다. 

 

 

 

관련글 더보기