Junior — Middle
Hoe wordt de samenwerking van meerdere goroutines in Go geregeld?
sobes.tech AI
Antwoord van AI
In Go wordt de coördinatie van het werk van meerdere goroutines meestal gedaan met behulp van kanalen (channels) en het package sync.
- Kanalen stellen goroutines in staat om gegevens uit te wisselen en de uitvoering te synchroniseren, door de zender of ontvanger te blokkeren totdat ze klaar zijn.
- sync.WaitGroup wordt gebruikt om te wachten tot een groep goroutines klaar is.
- Mutex en andere primitieve uit sync zorgen voor veilige toegang tot gedeelde bronnen.
Voorbeeld van het gebruik van een kanaal voor synchronisatie:
ch := make(chan int)
func() {
// Werk uitvoeren
ch <- 1 // signaal van voltooiing
}()
<-ch // wachten op het signaal
Op deze manier maken kanalen en synchronisatie-primitives het mogelijk om parallelle taken efficiënt te coördineren.