Junior — Middle
Come viene implementato e gestito il lavoro di più goroutine nell'applicazione?
sobes.tech AI
Risposta dell'AI
In Go, le goroutine sono thread leggeri gestiti dal runtime di Go, non dal sistema operativo. Quando un'applicazione crea molte goroutine, il runtime di Go pianifica la loro esecuzione su un numero limitato di thread di sistema (M), utilizzando il modello M:N (M thread di sistema per N goroutine).
Il scheduler di Go distribuisce le goroutine tra i thread, cambiando contesto molto rapidamente ed efficacemente. Questo permette di eseguire migliaia o anche milioni di goroutine con bassi costi di memoria e tempo.
Esempio di creazione di una goroutine:
func sayHello() {
fmt.Println("Ciao dalla goroutine")
}
func main() {
go sayHello() // avvia la goroutine
time.Sleep(time.Second) // dà tempo alla goroutine di eseguire
}