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()호출하기 전까지는 이벤트리셋되지 않으므로 계속 루프수행함.
처리사항들...
}
}
연관
첫 등록 : 2022.03.16
최종 수정 : 2022.04.09
단축 주소 : https://igotit.tistory.com/3551