모든 윈도우에서 사용되는 리소스는 커널오브젝트라는 것을 가진다.

이 커널 오브젝트는 2가지 상태값을 가지게 되는데, 시그널 상태 논시그널 상태이다.

CreateEvent함수는 개체를 시그널 or 논시그널로 핸들을 생성할 수 있다.

그리고 WaitForSingleObject함수로 CreateEvent에서 생성한 핸들이 시그널이 될때까지 기다리게 할 수 있다.


SetEvent는 핸들의 시그널 값을 논시그널에서 시그널로 바꿔주는 역할을 한다.


예제>

HANDLE WowEvent;

DWORD WINAPI ThreadProc(LPVOID lpParam)

{

Sleep(5000);

SetEvent( WowEvent ); // 3) 5초후 WowEvent 시그널 상태로 변경한다.

return 0;

}


int _tmain(int argc, _TCHAR* argv[])

{

DWORD ID = 0;

CreateThread(NULL, 0, ThreadProc, NULL, 0, &ID);

WowEvent = CreateEvent(0, FALSE, FALSE, 0); // 1) WowEvent를 논시그널 상태로 생성한다.


  WaitForSingleObject(WowEvent, INFINITE); // 2) WowEvent가 시그널 상태로 되기를 기다린다.


// 4) WaitForSingleObject를 빠져나온다.


return 0; 

}


+ Recent posts