Junior — Middle
Quali eventi e segnali possono essere usati per interagire con le goroutine nel linguaggio Go?
sobes.tech AI
Risposta dell'AI
Nel linguaggio Go, i principali meccanismi utilizzati per interagire con le goroutine sono:
- Canali (channels) — il metodo principale per trasmettere dati e segnali tra le goroutine. Attraverso i canali, è possibile inviare e ricevere valori, consentendo la sincronizzazione.
ch := make(chan int)
go func() {
ch <- 42 // invio di valore
}()
val := <-ch // ricezione di valore
- Contesto (context.Context) — usato per gestire la durata di vita delle goroutine, annullare operazioni e trasmettere segnali di cancellazione.
ctx, cancel := context.WithCancel(context.Background())
go func(ctx context.Context) {
select {
case <-ctx.Done():
// gestione dell'annullamento
}
}(ctx)
cancel() // segnale di cancellazione
-
sync.WaitGroup — per attendere che un gruppo di goroutine finisca.
-
Segnali di sistema — tramite il pacchetto
os/signal, è possibile intercettare segnali di sistema e passarli alle goroutine per una terminazione corretta.
In questo modo, gli "eventi" principali per l'interazione sono le operazioni di invio/ricezione tramite i canali, l'annullamento tramite il contesto e i segnali di sistema.