Sobes.tech
Middle+

Cos'è una goroutine? Come si differenzia da un thread del sistema operativo? Chi gestisce le goroutine?

sobes.tech AI

Risposta dell'AI

La goroutine è un leggero thread di esecuzione nel linguaggio Go, gestito dal runtime di Go e non dal sistema operativo. A differenza dei thread del sistema operativo, le goroutine occupano molto meno memoria (solitamente alcuni kilobyte di stack, che possono crescere e diminuire dinamicamente), e la loro creazione e commutazione sono molto più economiche in termini di risorse.

Principali differenze rispetto ai thread del sistema operativo:

  • Le goroutine sono pianificate e gestite dal runtime di Go, non dal sistema operativo.
  • Possono esserci migliaia o decine di migliaia di goroutine in un singolo processo senza carico significativo.
  • La commutazione di contesto tra le goroutine avviene più rapidamente, poiché non richiede il cambio di kernel.

La gestione delle goroutine è affidata al runtime di Go, che contiene uno scheduler proprio (M:N scheduler), che mappa molte goroutine (G) a un numero inferiore di thread del sistema operativo (M). Questo permette di utilizzare efficacemente le risorse di sistema e semplifica la programmazione parallela.