Junior — Middle
Welke gebeurtenissen en signalen kunnen worden gebruikt om te communiceren met goroutines in de programmeertaal Go?
sobes.tech AI
Antwoord van AI
In de programmeertaal Go worden de volgende hoofdmechanismen gebruikt om te communiceren met goroutines:
- Kanalen (channels) — de belangrijkste manier om gegevens en signalen tussen goroutines over te dragen. Via kanalen kunnen waarden worden verzonden en ontvangen, wat synchronisatie mogelijk maakt.
ch := make(chan int)
go func() {
ch <- 42 // waarde verzenden
}()
val := <-ch // waarde ontvangen
- Context (context.Context) — wordt gebruikt om de levensduur van goroutines te beheren, operaties te annuleren en cancelatiesignalen te verzenden.
ctx, cancel := context.WithCancel(context.Background())
go func(ctx context.Context) {
select {
case <-ctx.Done():
// afhandelingscancelatie
}
}(ctx)
cancel() // cancelatiesignaal
-
sync.WaitGroup — om te wachten tot een groep goroutines klaar is.
-
Systeemsignalen — via het pakket
os/signalkunnen systeemsignalen worden opgevangen en naar goroutines worden gestuurd voor een correcte afsluiting.
Zo zijn de belangrijkste "gebeurtenissen" voor interactie de verzend-/ontvangstoperaties via kanalen, annulering via de context en systeemsignalen.