Sobes.tech
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:

  1. 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
  1. 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
  1. sync.WaitGroup — per attendere che un gruppo di goroutine finisca.

  2. 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.