VisualStudio.C++.C#/코딩팁,함수활용,단편
CEvent . Lock() . SetEvent() . ResetEvent()
i.got.it
2022. 4. 9. 14:57
CEvent 생성자
CEvent(
BOOL bInitiallyOwn = FALSE,
BOOL bManualReset = FALSE,
LPCTSTR lpszName = NULL,
LPSECURITY_ATTRIBUTES lpsaAttribute = NULL);
2번 인자 bManualReset
- TRUE : ResetEvent() 호출해야 이벤트가 Reset 상태로 됨.
- FALSE : SetEvent() 호출이후 ResetEvent() 호출하지 않아도 자동으로 Reset 상태로 됨.
헤더파일 : afxmt.h
코드예.
#include <afxmt.h>
// 무인자로 생성하는 경우, 2번인자 기본 FALSE 적용된다.
// SetEvent() 호출하여 대기해제이후 ResetEvent()별도
// 호출하지 않아도 셀프 Reset 상태로 된다.
CEvent my_event;
void Thread
{
while(1){
my_event.Lock();
// 이곳서 대기 상태로 있으며,
// my_event.SetEvent(); 호출하면 대기해제되고 아래 수행된 이후
// 다시 이자리 오면 대기상태로 됨.
처리사항들...
}
}
//코드에서 ResetEvent() 호출시에만 reset 되게 하려면 생성시 2번인자를 TRUE로 한다.
CEvent my_event_manual(FALSE, TRUE);
void Thread
{
while(1){
my_event_manual.Lock();
// 이곳서 대기 상태로 있으며,
// my_event_manual.SetEvent(); 호출하면 대기해제되고
// ResetEvent()호출하기 전까지는 이벤트리셋되지 않으므로 계속 루프수행함.
처리사항들...
}
}
CEvent Class
Learn more about: CEvent Class
docs.microsoft.com
연관
Critical Section (크리티컬 섹션)
개요 Critical Section (크리티컬 섹션) 을 설정한 구간은 한 번에 하나의 "스레드"에서만 사용가능하다. - 프로세스 내에 여러 스레드가 있는 환경에서, 우리가 설정해둔 "크리티컬 영역" 에 어떤
igotit.tistory.com
Event Object, CreateEvent.WaitForSingleObject
개요 CreateEvent 는 이벤트개체를 생성하는 함수이며, 이벤트 개체가 생성되면 함수 SetEvent, ResetEvent 로 이벤트 상태를 제어할 수 있다. 이벤트 상태를 점검하기 위하여 함수 WaitForSingleObject 이용가
igotit.tistory.com
첫 등록 : 2022.03.16
최종 수정 : 2022.04.09
단축 주소 : https://igotit.tistory.com/3551