Sobes.tech
Senior

Ja GOMAXPROCS=2 un divi bezgalīgi cikli ar matemātiskām operācijām tiek izpildīti, vai tiks izpildītas citas goroutines?

sobes.tech AI

Atbilde no AI

Ja GOMAXPROCS=2, tas nozīmē, ka Go plānotājs var vienlaikus izmantot 2 OS pavedienus gorutīnu izpildei.

Ja tiek palaisti divi bezgalīgi cikli ar intensīvām matemātiskām operācijām, tie pilnībā aizņems abus pavedienus, jo tie neveic bloķējošus izsaukumus vai ievades/izvades operācijas.

Rezultātā citas gorutinas nevarēs saņemt CPU laiku, un to izpilde tiks būtiski kavēta vai gandrīz apstādināta.

Lai risinātu šādu situāciju, ir nepieciešams vai nu samazināt šo ciklu slodzi, pievienot punktus, kur gorutinas izsauc runtime.Gosched() vai veic bloķējošas operācijas, vai palielināt GOMAXPROCS, lai dotu vairāk pavedienu plānotājam.