Ce este o gorutină? Cu ce diferă de un fir de sistem? Vorbește despre planificatorul Go (GMP).
sobes.tech AI
Răspuns de la AI
Goroutine este un fir de execuție ușor în limbajul Go, gestionat de runtime-ul Go și nu de sistemul de operare. Spre deosebire de un fir de sistem, goroutine-urile au o dimensiune a stivei mult mai mică (începând cu câțiva kilobytes și putând crește dinamic), ceea ce permite rularea a mii și chiar milioane de goroutine-uri simultan cu costuri reduse.
Firurile de sistem sunt create și programate de sistemul de operare, au o stivă fixă mare și operații de schimbare a contextului mai costisitoare.
Planificatorul Go se bazează pe modelul GMP:
- G (goroutine) — goroutine-ul în sine, unitatea de execuție.
- M (mașină) — fir de sistem (thread OS) pe care rulează goroutine-urile.
- P (procesor) — procesor logic, resursă necesară pentru a executa o goroutine pe M.
P gestionează coada goroutine-urilor gata pentru execuție (G). M poate executa doar o goroutine la un moment dat, dar datorită existenței mai multor M și P, planificatorul distribuie eficient goroutine-urile între firele de sistem, asigurând concurență și paralelism.
Această abordare permite Go să utilizeze eficient resursele sistemului și să scaleze pe sisteme multiprocesor.