Senior
Ha GOMAXPROCS=2 és két végtelen ciklus fut matematikai műveletekkel, futnak-e más goroutine-ok?
sobes.tech MI
Válasz az MI-től
Ha GOMAXPROCS=2, az azt jelenti, hogy a Go ütemezője egyszerre 2 OS-szálat használhat a gorutinek végrehajtására.
Ha két végtelen ciklus fut intenzív matematikai műveletekkel, azok mindkét szálat teljesen elfoglalják, mivel nem végeznek blokkoló hívásokat vagy bemenet/kimenet műveleteket.
Ennek eredményeként más goroutine-ok nem kaphatnak CPU-időt, és végrehajtásuk jelentősen késleltetve vagy szinte megállva lesz.
Egy ilyen helyzet megoldásához csökkenteni kell ezeket a ciklusokat terhelésüket, hozzá kell adni pontokat, ahol a goroutine-ok runtime.Gosched() hívnak vagy blokkoló műveleteket végeznek, vagy növelni kell a GOMAXPROCS értékét, hogy több szálat adjon az ütemezőnek.