Junior — Middle
117
Pouvez-vous expliquer ce qu'est la variable conditionnelle sync.Cond dans le langage Go et à quoi elle sert?
Réponse de l'IA
sobes.tech IA
В языке Go sync.Cond — это структура, реализующая условную переменную, которая используется для синхронизации горутин. Она позволяет одной или нескольким горутинам ждать наступления определённого условия и уведомлять другие горутины о том, что это условие изменилось.
Основные методы sync.Cond:
Wait()— блокирует текущую горутину до тех пор, пока другая горутина не вызоветSignal()илиBroadcast().Signal()— пробуждает одну горутину, ожидающую на условной переменной.Broadcast()— пробуждает все горутины, ожидающие на условной переменной.
Пример использования:
var mu sync.Mutex
cond := sync.NewCond(&mu)
// Горутинa, которая ждёт сигнала
go func() {
mu.Lock()
cond.Wait() // ждём сигнала
// после пробуждения выполняем действия
mu.Unlock()
}()
// Горутинa, которая посылает сигнал
mu.Lock()
cond.Signal() // пробуждаем одну горутину
mu.Unlock()
Таким образом, sync.Cond помогает координировать работу нескольких горутин, ожидающих наступления определённых условий.