Sobes.tech
Junior — Middle

Care este diferența dintre o goroutine și un fir de sistem în contextul executării sarcinilor?

sobes.tech AI

Răspuns de la AI

O gorutină este o unitate de execuție ușoară gestionată de mediul de execuție Go (runtime), care utilizează foarte puțină memorie și poate fi lansată în mare număr simultan. Un fir de sistem (thread) este o unitate de planificare mai grea a sistemului de operare.

Principalele diferențe:

  • Gorutinele sunt mult mai ușoare din punct de vedere al resurselor decât firele de sistem.
  • Planificarea gorutinelor are loc în interiorul runtime-ului Go, nu de către sistemul de operare.
  • Mii de gorutine pot funcționa simultan, în timp ce numărul de fire de sistem este de obicei mai mic din cauza costurilor de creare și comutare.

Exemplu de creare a unei gorutine:

func sarcina() {
    fmt.Println("Executarea sarcinii")
}

func main() {
    go sarcina() // pornire gorutină
    time.Sleep(time.Second) // așteptăm pentru ca gorutina să se finalizeze
}

Astfel, gorutinele permit executarea eficientă a multor sarcini în paralel cu costuri mai mici.