Sobes.tech
Intern

Која од следеће опције је највероватнија да се деси када покушате да покренете веома велики број горутина (на пример, десетине хиљада) без додатне контроле? - Главни проблем ће бити блокирање глобалног mutex-а унутар runtime-а, што ће довести до потпуног заустављања извршавања програма - Планер Go ће извршавати горутине у малим групама секвенцијално, тако да раст њиховог броја скоро да не утиче на потрошњу меморије - Масовно стварање горутина може довести до значајне потрошње меморије и додатних трошкова планера; у таквим случајевима, одговарајуће је коришћење пул-а радника - Ако број горутина пређе број логичких процесора, Go ће аутоматски почети да одбија нове покретање горутина са паником

sobes.tech АИ

Одговор од АИ

Правильный ответ:

  • Массовое порождение горутин может привести к значительному расходу памяти и накладным расходам планировщика; в таких случаях уместен пул воркеров

Объяснение:

Горутины в Go — это легковесные потоки, но они всё равно потребляют память (стек, структуры планировщика). При запуске десятков тысяч горутин без контроля может значительно вырасти потребление памяти и нагрузка на планировщик.

Go не блокирует глобальный mutex при планировании горутин, планировщик эффективно переключается между ними.

Планировщик не выполняет горутины строго последовательно малыми группами, а распределяет их по доступным логическим процессорам (GOMAXPROCS).

Go не отклоняет создание горутин с паникой при превышении их числа.

Поэтому при большом числе горутин рекомендуется использовать пул воркеров, чтобы ограничить количество одновременно активных горутин и снизить накладные расходы.