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.