더북(TheBook)

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

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

• 스레드 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

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

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