Co je to gorutina? Čím se liší od systémového vlákna? Vyprávěj o plánovači Go (GMP).
sobes.tech AI
Odpověď od AI
Goroutine je lehký běhový vlákno v jazyce Go, řízené běhovým prostředím Go a nikoliv operačním systémem. Na rozdíl od systémového vlákna mají goroutine mnohem menší velikost zásobníku (začíná na několika kilobytech a může se dynamicky zvětšovat), což umožňuje spouštět tisíce nebo dokonce miliony goroutine současně s nízkými náklady.
Systémová vlákna jsou vytvářena a plánována operačním systémem, mají pevně stanovený velký zásobník a operace přepínání kontextu jsou dražší.
Plánovač Go je založen na modelu GMP:
- G (goroutine) — samotná goroutine, jednotka vykonávání.
- M (stroj) — systémové vlákno (OS thread), na kterém běží goroutine.
- P (procesor) — logický procesor, zdroj potřebný k vykonání goroutine na M.
P spravuje frontu připravených goroutine (G). M může vykonat pouze jednu goroutine najednou, ale díky přítomnosti více M a P plánovač efektivně rozděluje goroutine mezi systémová vlákna, zajišťujíc konkurenci a paralelismus.
Tento přístup umožňuje Go efektivně využívat systémové zdroje a škálovat na víceprocesorových systémech.