728x90
Thread 사용 시 함수의 중복된 실행을 막기 위해 사용하는 방법입니다
우선 헤더 파일에 이벤트 핸들을 추가합니다
HANDLE m_hEvent;
그 후 생성자 함수에서 이벤트를 생성합니다
CMyClass::CMyClass()
{
m_hEvent = CreateEvent(NULL, FALSE, TRUE, NULL);
}
CreateEvent 함수의 인자값으로는
첫 번째 : 이벤트 속성 (기본 NULL 값)
두 번째 : 매뉴얼 설정 (자동 설정의 경우 FALSE)
세 번째 : 초기값 (초기 활성화 시 TRUE)
네 번째 : 이벤트명 ( 기본 NULL 값)
생성 후 함수에서 아래와 같이 작성하면 동기화가 완료됩니다
void CMyClass::MyFunc()
{
WaitForSingleObject(m_hEvent, INFINITE);
//처리할 코드
SetEvent(m_hEvent);
}
위와 같이 작성하면 한 개의 스레드만 해당 함수에 접근 가능합니다
이후 마지막으로 소멸자에서 이벤트 변수를 정리해 주면 됩니다
CMyClass::~CMyClass()
{
SetEvent(m_hEvent);
CloseHandle(m_hEvent);
m_hEvent = NULL;
}
제 글이 도움이 되셨다면 댓글 & 공감 부탁드려요 😀
728x90
반응형
'Application > MFC' 카테고리의 다른 글
[MFC] CWnd 화면을 클립 보드로 복사하기 (2) | 2023.05.09 |
---|---|
[MFC] CBitmap 파일 저장 (CBitmap To CImage) (0) | 2023.05.08 |
[MFC] x64 OutputDebugString 디버깅 오류 (0) | 2023.04.27 |
[MFC] 한글 로그 파일 작성 (WideCharToMultiByte) (0) | 2023.04.26 |
[MFC] 프로세스 우선 순위 변경 (0) | 2023.04.18 |