CV; Condition Variables

HOW

operations

condition variable은 항상 2개의 operation을 가짐

  1. wait()

  2. signal()

  • process/thread invoking wait() operation is sleeped until another one invokes signal()

wait()

  • 의미:

    • “조건이 안 맞으니까, 나 잠들게”
  • 동작:

    1. 현재 thread → condition queue로 이동
    2. monitor lock 자동 release
    3. sleep
  • 핵심:

    • lock을 반드시 내려놓고 잠든다

signal()

  • 의미:
    • “조건이 맞았으니까 하나 깨워”
  • 동작:
    1. condition queue에서 thread 하나 깨움. 물론 없는 경우 아무 효과 없음.
    2. 그 thread는 다시 monitor 들어올 준비