Junior — Middle
Come viene effettuato il controllo dell'esecuzione e della sincronizzazione delle goroutine nel programma?
sobes.tech AI
Risposta dell'AI
In Go, il controllo dell'esecuzione e la sincronizzazione delle goroutine vengono generalmente effettuati con:
- WaitGroup del pacchetto
sync— permette di attendere la conclusione di un gruppo di goroutine. - Canali (channels) — vengono utilizzati per trasmettere dati e segnali tra goroutine, garantendo la sincronizzazione.
Esempio con WaitGroup:
var wg sync.WaitGroup
wg.Add(1)
go func() {
defer wg.Done()
// lavoro della goroutine
}()
wg.Wait() // aspetta la fine della goroutine
I canali permettono, ad esempio, di trasmettere risultati o segnali di completamento:
ch := make(chan int)
go func() {
ch <- 42 // invio del valore
}()
valore := <-ch // ricezione del valore, sincronizza le goroutine
Pertanto, WaitGroup e canali sono gli strumenti principali per il controllo e la sincronizzazione delle goroutine.