Senior
Ak je GOMAXPROCS=2 a beží dve nekonečné slučky s matematickými operáciami, budú sa vykonávať aj iné goroutine?
sobes.tech AI
Odpoveď od AI
Ak je GOMAXPROCS=2, znamená to, že plánovač Go môže súčasne používať 2 vlákna operačného systému na vykonávanie gorutín.
Ak bežia dve nekonečné slučky s intenzívnymi matematickými operáciami, zaberú obe úplne vlákna, pretože nevykonávajú blokujúce volania alebo operácie vstupu/výstupu.
V dôsledku toho iné gorutiny nemôžu získať čas procesora a ich vykonávanie bude výrazne oneskorené alebo takmer zastavené.
Na riešenie takejto situácie je potrebné buď znížiť záťaž v týchto slučkách, pridať body, kde gorutiny volajú runtime.Gosched() alebo vykonávajú blokujúce operácie, alebo zvýšiť GOMAXPROCS, aby sa dalo viac vlákien plánovaču.