Sobes.tech
Intern
28

Что из перечисленного вероятнее произойдет при попытке запустить очень большое количество горутин (например, десятки тысяч) без дополнительного контроля? - Основная проблема возникнет из-за блокировки глобального mutex внутри рантайма, что приведёт к полной остановке выполнения программы - Планировщик Go будет последовательно выполнять горутины небольшими группами, поэтому рост их числа практически не влияет на потребление памяти - Массовое порождение горутин может привести к значительному расходу памяти и накладным расходам планировщика; в таких случаях уместен пул воркеров - Если число горутин превышает число логических процессоров, Go автоматически начнёт отклонять новые горутин-запуски с паникой

Companies where asked
AvitoAvito

Answer from AI

sobes.tech AI

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

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

Объяснение:

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

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

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

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

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