Junior — Middle
Koji događaji i signali se mogu koristiti za interakciju sa gorutinama u jeziku Go?
sobes.tech АИ
Одговор од АИ
U jeziku Go, sledeći osnovni mehanizmi se koriste za interakciju sa gorutinama:
- Kanali (channels) — glavni način prenosa podataka i signala između gorutina. Kroz kanale, može se slati i primati vrednosti, što omogućava sinhronizaciju.
ch := make(chan int)
go func() {
ch <- 42 // slanje vrednosti
}()
val := <-ch // primanje vrednosti
- Kontekst (context.Context) — koristi se za upravljanje vremenom života gorutina, za otkazivanje operacija i prenos signala otkazivanja.
ctx, cancel := context.WithCancel(context.Background())
go func(ctx context.Context) {
select {
case <-ctx.Done():
// obrada otkazivanja
}
}(ctx)
cancel() // signal otkazivanja
-
sync.WaitGroup — za čekanje završetka grupe gorutina.
-
Sistemski signali — putem paketa
os/signal, mogu se uhvatiti sistemski signali i poslati gorutinama za ispravno završavanje.
Na ovaj način, glavni "događaji" za interakciju su operacije slanja/prijema putem kanala, otkazivanje putem konteksta i sistemski signali.