다음 내용은 윈도우 환경에서 EVENT 객체를 사용하는 방법에 대해서 설명하고 있습니다.

일반적으로 이벤트 객체는 서로 다른 쓰레드 환경에서 공유자원의 무결성을 효과적으로 제어하기 위해서

사용되어집니다. 물론 그 밖의 쓰임새도 있겠죠. ^^;

본 예제에서는 이벤트 객체를 시그널 된 상태일 때와 그렇지 않을 때를 비교해서 설명하고 있습니다.

내용이 어렵지 않으니, 실행해 보시면 금방 이해가 가실거라는 생각이 드네요~ ㅎ

#include <time.h> #include <stdio.h> #include <windows.h> #define MY_WAIT_TIME 5000 void EventWithSignal() { DWORD dwRet = 0; HANDLE hEvent = NULL; time_t tStart = time(0); hEvent = CreateEvent(NULL, TRUE, FALSE, "YourEventName"); printf("event with signal\n"); SetEvent(hEvent); /* 이벤트 객체를 signaled 상태로 만듬. */ /* event가 발생 할 때 까지 5초 동안 대기 */ dwRet = WaitForSingleObject(hEvent, MY_WAIT_TIME); if ( dwRet == WAIT_OBJECT_0 ) printf("event is signaled.\n"); CloseHandle(hEvent); printf("elapsed time %d sec.\n", time(0) - tStart); printf("\n"); } void EventWithNonSignal() { DWORD dwRet = 0; HANDLE hEvent = NULL; time_t tStart = time(0); hEvent = CreateEvent(NULL, TRUE, FALSE, "YourEventName"); printf("event with non-signal\n"); ResetEvent(hEvent); /* 이벤트 객체를 non-signaled 상태로 만듬. */ /* event가 발생 할 때 까지 5초 동안 대기 */ dwRet = WaitForSingleObject(hEvent, MY_WAIT_TIME); if ( dwRet == WAIT_TIMEOUT ) printf("event timeout..\n"); CloseHandle(hEvent); printf("elapsed time %d sec.\n", time(0) - tStart); printf("\n"); } int main(int argc, char **argv) { EventWithSignal(); EventWithNonSignal(); return 0; }


출처: http://blog.daum.net/_blog/BlogTypeView.do?blogid=0Idq4&articleno=6297610#ajax_history_home

'MFC' 카테고리의 다른 글

유니코드와 아스키코드  (0) 2012.01.30
memset, memcpy의 잘못된 사용  (0) 2012.01.30
쓰레드 사용법  (0) 2011.08.30
socket 함수 정의  (0) 2011.08.30
CBitmapButton 사용하는 방법  (0) 2011.08.30
Posted by pkss
,