Sobes.tech
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 goroutine Signal() of Broadcast() 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.