Go sync.Cond Wait Memeriksa Ulang Shared State
sync.Cond.Wait melanjutkan eksekusi setelah notification, tetapi notification tidak menyatakan bahwa kondisi khusus milik caller masih true ketika goroutine memperoleh lock kembali. Shared predicate tetap menjadi source of truth, sehingga waiter memeriksanya lagi setiap kali Wait kembali. Boundary ini memisahkan notification dari state. Signal dan Broadcast mengumumkan bahwa state yang relevan mungkin telah berubah; keduanya tidak memindahkan ownership state tersebut atau memesannya untuk waiter tertentu. Wait membuka lock lalu memperolehnya kembali Sebuah Cond terkait dengan Locker, umumnya *sync.Mutex. Caller memegang lock tersebut saat memeriksa shared state. Jika predicate false, Wait secara atomik membuka locker dan menangguhkan caller. Sebelum Wait kembali, ia mengunci locker lagi.