Senior
Als GOMAXPROCS=2 is en twee oneindige lussen met wiskundige bewerkingen worden uitgevoerd, worden andere goroutines dan uitgevoerd?
sobes.tech AI
Antwoord van AI
Als GOMAXPROCS=2 is, betekent dit dat de Go-planner tegelijkertijd 2 OS-threads kan gebruiken voor het uitvoeren van goroutines.
Als twee oneindige lussen met intensieve wiskundige bewerkingen draaien, zullen ze beide volledig de twee threads bezetten, omdat ze geen blokkerende oproepen of invoer/uitvoer-operaties uitvoeren.
Als gevolg hiervan kunnen andere goroutines geen CPU-tijd krijgen, en hun uitvoering wordt sterk vertraagd of bijna gestopt.
Om zo'n situatie op te lossen, moet je of de belasting in deze lussen verminderen, punten toevoegen waar goroutines runtime.Gosched() aanroepen of blokkerende operaties uitvoeren, of GOMAXPROCS verhogen om meer threads aan de planner te geven.