SetEvent는 이벤트의 발생여부에 관한 flag일뿐
호출한 수만큼 이벤트를 증가 시키는것이 아닙니다
즉 SetEvent하는 순간 Event flag는 True가 되었다가
이벤트가 끝나면 false가 (혹은 true유지) 되는 것입니다.
이런 종료시의 flag의 변화는 이벤트생성시 설정에
따라 달라지고요..
인식님의 예중 하나만 설명드리겠습니다.
하나의 스레드에서의
CreateEvent(NULL, FALSE, FALSE, NULL); // 이벤트생성
// 이벤트 종료시 flag false로
for(int i=0; i < 10; i++)
SetEvent(m_hEvent); // 10번 이벤트 flag를 true 하는것에 불과합니다.
// 1번하는것과 10번하는것과 같죠
while(1)
{
WaitForSingleObject(m_hEvent, INFINITE);
printf(" %d 번째 신호발생" , ++m_nCount);
// 이벤트가 끝난후 flag false로. 따라서 1번 실행후
// 다음에 올 이벤트를 기다림
}
나머지 문제들도 위의 내용으로 잘 생각해보시면 될것이고요.
끝으로 SetEvent와 상반되는 함수는 ResetEvent가 있음을 알려드립니다
HiDy
'내발자국[동호회]' 카테고리의 다른 글
| [잡담] Directplay 8에 대해 (0) | 2000.12.07 |
|---|---|
| [답변] 2091 추가 (0) | 2000.12.07 |
| 내가 아는 어떤 아름다움은 (0) | 2000.11.28 |
| 잘자요 (0) | 2000.11.22 |
| [답변] 아주기초적인 질문... (0) | 2000.11.20 |