May 15 2003 11:47 Written by sinalove (codenuri.com member)
스레드를 동기화하는 방법에는 여러가지 방법이 있습니다.
저의 경우 예전에 전역플레그를 사용한 동기화 방법을 많이 사용했습니다.
그런데 이경우 시스템의 부하가 많이 발생하는 경우가 많습니다.
이러한 문제점을 해결하기 위해 WaitForSingleObject() 함수에 의한
동기화 방법에 대해 알아보겠습니다.
아주 간단하면서도 효과적이고 시스템의 부하도 적은 방법이니
알아두시면 유용하게 쓰실 기회가 반드시 생길겁니다.
엥 ??? 이미 다 알고 있으신 분은 걍 복습한다 생각하세용. ^^
1. 먼저 스레드의 이벤트 핸들을 정의합니다.
이 이벤트핸들은 스레드에서 이 핸들에 이벤트가 발생할경우 WaitForSingleObject()를
통과하도록 하기위해서 필요합니다.
헤더에 다음과 같이 정의합니다.
m_hEvnet 는 이벤트핸들이고, m_hThread 는 스레드 핸들입니다.
2. 이제 스레드함수를 만듭니다.
자 이스레드는 먼저 Wait 라는 메시지박스를 출력하고 이벤트가 발생하길 기다리다가
이벤트가 발생하면 End 라는 메시지박스를 출력하고 스레드를 종료할겁니다.
3. 자 이제 이벤트와 관련된 부분을 만듭시다.
이코드는 이벤트를 만들어 m_hEvent 에 붙이고 이벤트를 활성화하는 코드입니다.
적당한데 넣어주면 되겠지요.
4. 나머지는 스레드를 시작하는 부분과 스레드 시작후 이벤트를 발생시키는 부분입니다.
스레드의 시작은 다 아시겠지만
해주면 되겠고, 이벤트의 발생은
해주면 됩니다.
스레드를 동기화하는 방법에는 여러가지 방법이 있습니다.
저의 경우 예전에 전역플레그를 사용한 동기화 방법을 많이 사용했습니다.
그런데 이경우 시스템의 부하가 많이 발생하는 경우가 많습니다.
이러한 문제점을 해결하기 위해 WaitForSingleObject() 함수에 의한
동기화 방법에 대해 알아보겠습니다.
아주 간단하면서도 효과적이고 시스템의 부하도 적은 방법이니
알아두시면 유용하게 쓰실 기회가 반드시 생길겁니다.
엥 ??? 이미 다 알고 있으신 분은 걍 복습한다 생각하세용. ^^
1. 먼저 스레드의 이벤트 핸들을 정의합니다.
이 이벤트핸들은 스레드에서 이 핸들에 이벤트가 발생할경우 WaitForSingleObject()를
통과하도록 하기위해서 필요합니다.
헤더에 다음과 같이 정의합니다.
m_hEvnet 는 이벤트핸들이고, m_hThread 는 스레드 핸들입니다.
2. 이제 스레드함수를 만듭니다.
자 이스레드는 먼저 Wait 라는 메시지박스를 출력하고 이벤트가 발생하길 기다리다가
이벤트가 발생하면 End 라는 메시지박스를 출력하고 스레드를 종료할겁니다.
3. 자 이제 이벤트와 관련된 부분을 만듭시다.
이코드는 이벤트를 만들어 m_hEvent 에 붙이고 이벤트를 활성화하는 코드입니다.
적당한데 넣어주면 되겠지요.
4. 나머지는 스레드를 시작하는 부분과 스레드 시작후 이벤트를 발생시키는 부분입니다.
스레드의 시작은 다 아시겠지만
해주면 되겠고, 이벤트의 발생은
해주면 됩니다.
"MFC" 카테고리의 다른 글
- IPC (Inter Process Communication) (0)2007/05/15
- CFile 클래스를 이용한 파일 I/O (0)2007/05/15
- WaitForSingleObject() 에 의한 Thread 동기화 (0)2007/05/15
- 응용 프로그램의 INI 파일 바꾸기 (0)2007/05/15
- Thread (쓰레드) 란 ? (3)2007/05/15

수안이의 컴퓨터 연구실



Leave your greetings.