이를 위해 다음과 같은 것을 만들어 볼 수도 있습니다.

    • 이벤트를 하나 준비합니다. 이 이벤트는 ‘큐에 뭔가가 있다’를 알리는 역할을 합니다.

    • 스레드 1은 이벤트를 기다립니다. 그리고 큐에서 항목을 꺼냅니다.

    • 스레드 2는 큐에 항목을 넣고 이벤트에 신호를 줍니다.

    • 스레드 1·2는 이 일을 계속 반복합니다.

    Queue queue;
    Event queueIsNotEmpty;
     
    void Thread1()
    {
      while (true)
      {
          queueIsNotEmpty.Wait();
          queue.PopFront();
      }
    }
     
    void Thread2()
    {
      while (true)
      {
          queue.PushBack();
          queueIsNotEmpty.SetEvent();
      }
    }

    Tip

    코드 이해를 돕고자 큐의 임계 영역 보호 등 여러 가지 조치 내용은 일부러 생략했습니다.

    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.