Application/MFC
[MFC] Thread 동기화 (CreateEvent)
devsalix
2023. 5. 3. 17:04
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
반응형