Sobes.tech
Senior

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.