Senior
Wenn GOMAXPROCS=2 ist und zwei unendliche Schleifen mit mathematischen Operationen laufen, werden dann andere Goroutines ausgeführt?
sobes.tech KI
Antwort von AI
Wenn GOMAXPROCS=2 ist, bedeutet dies, dass der Go-Planer gleichzeitig 2 OS-Threads zur Ausführung von Goroutines verwenden kann.
Wenn zwei unendliche Schleifen mit intensiven mathematischen Operationen laufen, belegen sie beide Threads vollständig, da sie keine blockierenden Aufrufe oder E/A-Operationen durchführen.
Infolgedessen können andere Goroutines keine CPU-Zeit erhalten, und ihre Ausführung wird stark verzögert oder praktisch gestoppt.
Um eine solche Situation zu beheben, muss man entweder die Last in diesen Schleifen verringern, Punkte hinzufügen, an denen Goroutines runtime.Gosched() aufrufen oder blockierende Operationen durchführen, oder GOMAXPROCS erhöhen, um dem Scheduler mehr Threads zu geben.