Sobes.tech
Junior — Middle

Care este diferența dintre executarea codului într-o goroutine și funcționarea unui fir de sistem la nivelul sistemului de operare?

sobes.tech AI

Răspuns de la AI

Gorutinele în Go sunt fire ușoare gestionate de runtime-ul Go, nu de sistemul de operare. Principalele diferențe:

  • Ușor: Gorutinele ocupă foarte puțină memorie (de obicei câțiva kilobyte de stivă), în timp ce firele sistemului necesită mult mai multe resurse.
  • Planificare: Planificatorul de gorutine este integrat în runtime-ul Go și distribuie gorutinele între firele de sistem, ceea ce permite o utilizare eficientă a CPU-ului.
  • Creare și comutare: Crearea și comutarea între gorutine sunt mai rapide decât între firele de sistem, deoarece nu necesită schimbarea contextului nucleului OS.

Exemplu:

func main() {
    go func() {
        fmt.Println("Gorutina")
    }()
    fmt.Println("Fir principal")
    time.Sleep(time.Second) // Așteaptă finalizarea gorutinei
}

Aici, gorutina este pornită în interiorul procesului, dar nu corespunde direct unui fir de sistem separat.