Sobes.tech
Senior

Kui GOMAXPROCS=2 ja käivitatakse kaks lõpmatut tsüklit matemaatiliste operatsioonidega, kas teised goroutines töötavad?

sobes.tech AI

Vastus AI-lt

Kui GOMAXPROCS=2, see tähendab, et Go planeerija saab samaaegselt kasutada 2 OS-kihti gorutinate täitmiseks.

Kui käivitatakse kaks lõpmatut tsüklit intensiivsete matemaatiliste operatsioonidega, need hõivavad mõlemad kihti täielikult, kuna nad ei tee blokeerivaid kõnesid ega sisendi/väljundi operatsioone.

Tulemuseks ei saa teised gorutined CPU aega ning nende täitmine viibib oluliselt või on peaaegu peatatud.

Sellise olukorra lahendamiseks tuleb kas vähendada nende tsüklite koormust, lisada punktid, kus gorutined kutsuvad runtime.Gosched() või teevad blokeerivaid operatsioone, või suurendada GOMAXPROCS-i, et anda planeerijale rohkem kihti.