Sobes.tech
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.