Junior — Middle
Potresti spiegare il concetto di thread leggeri e le differenze rispetto ai thread di esecuzione normali?
sobes.tech AI
Risposta dell'AI
I thread leggeri (goroutine in Go) sono un'astrazione per l'esecuzione parallela del codice, più leggeri ed efficienti in risorse rispetto ai thread di sistema tradizionali.
Differenze:
- Risorse: le goroutine occupano molto meno memoria (solitamente alcuni kilobyte), mentre un thread di sistema ne richiede molto di più (solitamente megabyte).
- Pianificazione: le goroutine sono pianificate dal scheduler di Go all'interno del processo, non dal sistema operativo, permettendo un cambio rapido tra di esse.
- Creazione: avviare una goroutine è molto veloce e poco costoso, si possono creare migliaia o anche milioni contemporaneamente.
Esempio di creazione di una goroutine:
func sayHello() {
fmt.Println("Ciao dalla goroutine")
}
func main() {
go sayHello() // avvia la funzione in una goroutine separata
time.Sleep(time.Second) // aspetta affinché la goroutine possa completarsi
}
In questo modo, le goroutine leggere permettono di sfruttare il parallelismo in modo efficiente senza grandi costi aggiuntivi.