기타

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();