Sobes.tech
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.