Junior — Middle
Kunt u uitleggen wat een conditionele variabele sync.Cond is in de Go-taal en waar deze voor wordt gebruikt?
sobes.tech AI
Antwoord van AI
In de programmeertaal Go is sync.Cond een structuur die een voorwaardelijke variabele implementeert, gebruikt voor het synchroniseren van goroutines. Het stelt één of meerdere goroutines in staat te wachten tot een bepaalde voorwaarde is vervuld en andere goroutines hiervan op de hoogte te stellen dat deze voorwaarde is veranderd.
De belangrijkste methoden van sync.Cond:
Wait()— blokkeert de huidige goroutine totdat een andere goroutineSignal()ofBroadcast()aanroept.Signal()— wekt één goroutine die wacht op de voorwaardelijke variabele.Broadcast()— wekt alle goroutines die wachten op de voorwaardelijke variabele.
Voorbeeld van gebruik:
var mu sync.Mutex
cond := sync.NewCond(&mu)
// Goroutine die wacht op een signaal
go func() {
mu.Lock()
cond.Wait() // wacht op het signaal
// na het ontwaken, voer acties uit
mu.Unlock()
}()
// Goroutine die het signaal verzendt
mu.Lock()
cond.Signal() // wekt één goroutine
mu.Unlock()
Op deze manier helpt sync.Cond bij het coördineren van het werk van meerdere goroutines die wachten op het optreden van bepaalde voorwaarden.