Sobes.tech
Senior

Č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.