Come avviene l'allocazione e la gestione della memoria quando si utilizzano le goroutine nel linguaggio Go?
sobes.tech AI
Risposta dell'AI
In Go, le goroutine sono thread leggeri gestiti dal runtime di Go. Quando si crea una goroutine, viene allocato uno stack di memoria piccolo (di solito circa 2 KB), che può crescere e ridursi dinamicamente secondo necessità. Questo permette di utilizzare la memoria in modo efficiente, poiché lo stack non è fisso e si adatta al carico.
La gestione della memoria avviene tramite il scheduler di Go, che distribuisce le goroutine sui thread di sistema. Lo stack della goroutine si trova nell'heap, e il garbage collector libera automaticamente la memoria non più utilizzata.
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 possa completarsi
}
In questo modo, Go nasconde al sviluppatore i dettagli della gestione della memoria delle goroutine, garantendo semplicità ed efficienza nell'esecuzione parallela.