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동작이 차이가 발생한다.
MFC D8040 : 자식 프로세스를 만들거나 통신하는 동안 오류가 발생했습니다. 해결법.. (0) | 2020.04.12 |
---|