Čo je gorutina? Čím sa líši od systémového vlákna? Porozprávaj o plánovači Go (GMP).
sobes.tech AI
Odpoveď od AI
Goroutine je ľahký vlákno na vykonanie v jazyku Go, riadené prostredím runtime Go a nie operačným systémom. Na rozdiel od systémového vlákna majú goroutine oveľa menšiu veľkosť zásobníka (začínajú s niekoľkými kilobajtmi a môžu sa dynamicky zväčšovať), čo umožňuje spúšťanie tisícov alebo dokonca miliónov goroutine súčasne s nízkymi nákladmi.
Systémové vlákna sú vytvárané a plánované operačným systémom, majú pevne stanovený veľký zásobník a operácie prepínania kontextu sú drahšie.
Planovač Go je založený na modeli GMP:
- G (goroutine) — samotná goroutine, jednotka vykonávania.
- M (stroj) — systémové vlákno (OS thread), na ktorom bežia goroutine.
- P (procesor) — logický procesor, zdroj potrebný na vykonanie goroutine na M.
P spravuje frontu pripravených goroutine (G). M môže vykonať iba jednu goroutine naraz, ale vďaka prítomnosti viacerých M a P, plánovač efektívne rozdeľuje goroutine medzi systémové vlákna, zabezpečujúc konkurenciu a paralelizmus.
Tento prístup umožňuje Go efektívne využívať systémové zdroje a škálovať na viacprocesorových systémoch.