Sobes.tech
Junior — Middle

Cosa rende le goroutine più efficienti rispetto ai thread di implementazione tradizionale?

sobes.tech AI

Risposta dell'AI

Le goroutine in Go sono più efficienti rispetto ai thread tradizionali grazie a diverse caratteristiche chiave:

  • Leggerezza: Le goroutine occupano pochissima memoria (di solito circa 2 KB di stack), mentre i thread di sistema richiedono molto più spazio.
  • Scheduler a livello di linguaggio: Go ha il proprio scheduler di goroutine, che distribuisce efficacemente la loro esecuzione sui thread di sistema, consentendo di eseguire migliaia di goroutine contemporaneamente senza costi significativi.
  • Creazione e cambio di contesto rapidi: La creazione e il cambio tra goroutine avviene molto più velocemente rispetto ai thread OS, riducendo i costi del multitasking.

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 che la goroutine venga eseguita
}