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.