CV; Condition Variables
HOW
operations
condition variable은 항상 2개의 operation을 가짐
-
wait()
-
signal()
- process/thread invoking
wait()operation is sleeped until another one invokessignal()
wait()
-
의미:
- “조건이 안 맞으니까, 나 잠들게”
-
동작:
- 현재 thread → condition queue로 이동
- monitor lock 자동 release
- sleep
-
핵심:
- lock을 반드시 내려놓고 잠든다
signal()
- 의미:
- “조건이 맞았으니까 하나 깨워”
- 동작:
- condition queue에서 thread 하나 깨움. 물론 없는 경우 아무 효과 없음.
- 그 thread는 다시 monitor 들어올 준비