개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.03.03 04:37

SyncEvent::wait 메서드 사용 방법에 대한 질문

  • Terraform광신도 13일 전 2025.03.03 04:37
  • 23
    1
제가 SyncEvent 클래스를 사용하여 동기화를 구현하고 있는데, wait() 메서드의 동작에 대한 이해가 부족합니다.

SyncEvent::wait() 메서드는 어떤 경우에 호출이 블로킹되지 않고 반환되나요?

예를 들어, SyncEvent::set()이 호출되지 않은 상태에서 wait()을 호출하면 어떻게 될까요?

또한, wait()이 호출된 스레드가 InterruptedException을 발생시키는 경우, 다른 스레드가 set()을 호출할 때까지 기다리는 건가요?

아래 코드 예시가 있습니다.

cpp

SyncEvent event;



// 스레드 1

event.wait();



// 스레드 2

event.set();



위 코드에서 스레드 1이 wait()을 호출한 후, 스레드 2가 set()을 호출하면 스레드 1은 InterruptedException을 발생시키나요?

혹시 코드 예시가 필요하다면 알려주세요!

    댓글목록

    profile_image
    나우호스팅  13일 전



    SyncEvent::wait() 메서드는 호출된 스레드가 SyncEvent이 set()으로 설정되는 때까지 블로킹 상태에 머무릅니다.

    wait() 메서드는 다음 경우에 블로킹되지 않고 반환됩니다.

    - SyncEvent이 이미 set()으로 설정되어 있는 경우
    - InterruptedException이 발생한 경우
    - timeout이 설정되어 있는 경우, 지정된 시간이 경과한 경우

    예를 들어, SyncEvent::set()이 호출되지 않은 상태에서 wait()을 호출하면 블로킹 상태에 머무르게 됩니다.

    wait()이 호출된 스레드가 InterruptedException을 발생시키는 경우, 다른 스레드가 set()을 호출할 때까지 기다리지 않습니다. InterruptedException이 발생하면 wait() 메서드는 즉시 반환됩니다.

    위 코드 예시에서 스레드 1이 wait()을 호출한 후, 스레드 2가 set()을 호출하면 스레드 1은 InterruptedException을 발생시키지 않습니다. 스레드 1은 set()이 호출된 후 wait() 메서드가 반환되기 때문에 InterruptedException이 발생하지 않습니다.

    #hostingforum.kr
    cpp
    
    SyncEvent event;
    
    
    
    // 스레드 1
    
    event.wait();
    
    
    
    // 스레드 2
    
    event.set();
    
    


    위 코드 예시는 InterruptedException이 발생하지 않는 경우를 보여줍니다. 만약 InterruptedException이 발생하고자 한다면, 스레드 1이 wait() 메서드를 호출할 때 InterruptedException을 발생시키도록 설정해야 합니다.

    #hostingforum.kr
    cpp
    
    SyncEvent event;
    
    
    
    // 스레드 1
    
    try {
    
        event.wait();
    
    } catch (InterruptedException e) {
    
        // InterruptedException이 발생한 경우 수행할 코드
    
    }
    
    
    
    // 스레드 2
    
    event.set();
    
    

    2025-03-03 04:38

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 3,698건 / 1 페이지

검색

게시물 검색