Sobes.tech
Junior — Middle

Ați putea explica conceptul de fire ușoare și diferențele lor față de firele de execuție obișnuite?

sobes.tech AI

Răspuns de la AI

Firele uși (goroutines în Go) sunt o abstracție pentru executarea paralelă a codului, mai ușoare și mai eficiente din punct de vedere al resurselor decât firele de sistem obișnuite.

Diferențe:

  • Resurse: goroutine-urile ocupă mult mai puțină memorie (de obicei câțiva kilobytes), în timp ce un fir de sistem necesită mult mai mult (de obicei megabytes).
  • Planificare: goroutine-urile sunt planificate de planificatorul Go în interiorul procesului, nu de sistemul de operare, ceea ce permite comutarea rapidă între ele.
  • Creare: lansarea unei goroutine este foarte rapidă și ieftină, se pot crea mii sau chiar milioane simultan.

Exemplu de creare a unei goroutine:

func sayHello() {
    fmt.Println("Salut din goroutine")
}

func main() {
    go sayHello() // pornește funcția într-o goroutine separată
    time.Sleep(time.Second) // așteaptă pentru ca goroutine să se finalizeze
}

Astfel, firele ușoare permit utilizarea eficientă a paralelismului fără costuri mari suplimentare.