条件変数
特定の条件が満たされるまでスレッドを待機させるために用いられる
mutex と組み合わせて利用することで、共有リソースの安全なアクセスを制御する e.g.
Wait()
呼び出されると、関連付けられたロックを解放して待機する
他の ゴルーチン が Signal() または Broadcast() を呼び出して通知すると、待機中のゴルーチンはロックを再取得して再開する warning.icon mutex の解放とゴルーチンを一時停止する操作は アトミック に行われる Signal()
Wait でブロックしているゴルーチンがあれば、そのうち 1 つを再開させる
Broadcast()
Wait で待機しているすべてのゴルーチンを再開させる
warning.icon mutex を得られるゴルーチンは 1 つだけ であり、そのゴルーチンが mutex を解放するまで他のゴルーチンは mutex を獲得待ちのまま