Junior — Middle
Come vengono implementate e gestite le goroutine nel linguaggio Go?
sobes.tech AI
Risposta dell'AI
Le goroutine in Go sono thread leggeri gestiti dal runtime di Go, non dal sistema operativo. Permettono di scrivere codice concorrente con risorse minime.
Punti chiave dell'implementazione e gestione delle goroutine:
- Creazione: Una goroutine viene avviata con la parola chiave
goprima di chiamare una funzione. - Scheduler: Il runtime di Go ha il proprio scheduler che distribuisce le goroutine tra i thread di sistema (pianificazione M:N).
- Stack: Ogni goroutine ha uno stack dinamico che può crescere o ridursi secondo necessità, partendo da pochi kilobyte.
- Comunicazione: Si utilizzano canali per sincronizzare e scambiare dati tra le goroutine.
Esempio di creazione di una goroutine:
func sayHello() {
fmt.Println("Ciao dalla goroutine")
}
func main() {
go sayHello() // avvia la goroutine
time.Sleep(time.Second) // aspetta affinché la goroutine possa completarsi
}
In questo modo, le goroutine sono un modo efficiente per eseguire codice in parallelo con costi minimi.