Senior
Cos'è una goroutine? Come è strutturata?
sobes.tech AI
Risposta dell'AI
Una goroutine è un leggero thread di esecuzione nel linguaggio Go. A differenza dei thread di sistema, le goroutine sono gestite dal runtime di Go e hanno uno stack molto piccolo (inizia con alcuni kilobyte e può crescere dinamicamente). Questo permette di eseguire centinaia di migliaia di goroutine contemporaneamente con bassi costi di overhead.
Struttura di una goroutine:
- Quando si crea una goroutine (con l'operatore
go), il pianificatore di Go la mette nella coda delle attività pronte all'esecuzione. - Il runtime di Go utilizza una pianificazione M:N: M thread di sistema (thread OS) gestiscono N goroutine.
- Le goroutine cambiano contesto a livello di runtime, il che è più veloce rispetto al cambio di thread di sistema.
- Ogni thread (M) può eseguire più goroutine (N), alternando tra loro in caso di blocchi o secondo necessità.
Esempio di creazione di una goroutine:
func sayHello() {
fmt.Println("Ciao dalla goroutine")
}
func main() {
go sayHello() // avvia la goroutine
time.Sleep(time.Second) // attende affinché la goroutine abbia il tempo di eseguirsi
}