Potresti spiegare cosa significa avviare e gestire le goroutine nel linguaggio Go?
sobes.tech AI
Risposta dell'AI
Nel linguaggio Go, le goroutine sono thread di esecuzione leggeri gestiti dal runtime di Go. Avviare una goroutine permette di eseguire una funzione o metodo in parallelo con il thread principale, senza bloccarlo.
Per avviare una goroutine si utilizza la parola chiave go prima della chiamata alla funzione:
func sayHello() {
fmt.Println("Ciao dalla goroutine")
}
func main() {
go sayHello() // avvio della goroutine
// il thread principale continua
time.Sleep(time.Second) // per permettere alla goroutine di completarsi
}
La gestione delle goroutine include sincronizzazione e coordinamento del loro lavoro. A tal fine, si usano spesso canali (chan), che permettono di trasmettere dati tra goroutine in modo sicuro ed efficiente.
Esempio di utilizzo di un canale per attendere la fine di una goroutine:
func worker(done chan bool) {
fmt.Println("Lavoro della goroutine")
done <- true // segnale di completamento
}
func main() {
done := make(chan bool)
go worker(done)
<-done // attesa del segnale
fmt.Println("Goroutine terminata")
}
In questo modo, avviare e gestire le goroutine è un modo per organizzare l'esecuzione concorrente del codice usando thread leggeri e meccanismi di sincronizzazione.