Что такое sync.Cond?

Ответ

Условная переменная: ожидание события с разблокировкой мьютекса. Wait() атомарно разблокирует мьютекс и блокирует горутину; при пробуждении снова захватывает мьютекс. Signal() будит одну, Broadcast() - всех. Используют для ожидания условия под мьютексом (очередь, готовность данных).

cond := sync.NewCond(&mu)
// waiter: mu.Lock(); for !condition { cond.Wait() }; ...; mu.Unlock()
// signaller: mu.Lock(); condition=true; cond.Signal(); mu.Unlock()
🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.