기타
Linux C++ 이벤트
카멜레온개발자
2021. 10. 6. 14:32
윈도우 이벤트 구현을 WaitForSingleObject 나 WaitForMultipleObjects를 이용해서 구현하다가
리눅스에서 구현하기 위해서 이래저래 알아보다 구현 방법정리함.
1. 변수 선언
std::condition_variable trigger_event;
std::mutex trigger_mutex;
int trigger_type = 0;
int trigger_state = 0;
2. 트리거 기다리는 부분
while(1){
std::unique_lock<std::mutex> lk(trigger_mutex);
if (trigger_event.wait_for(lk, 500ms, [] {
return trigger_state == 1; })
)
{
trigger_state = 0;
switch(trigger_type){
case 0:
break;
case 1:
break;
}
}
3. 트리거 발생 부분
trigger_state = 1;
trigger_event.notify_one();