Sobes.tech
Intern

Which of the following options is most likely to happen when trying to start a very large number of goroutines (for example, tens of thousands) without additional control? - The main problem will be caused by blocking the global mutex inside the runtime, which will lead to a complete halt of program execution - The Go scheduler will execute goroutines in small groups sequentially, so their increasing number will almost not affect memory consumption - Massive creation of goroutines can lead to significant memory usage and overhead of the scheduler; in such cases, a worker pool is appropriate - If the number of goroutines exceeds the number of logical processors, Go will automatically start rejecting new goroutine launches with a panic

sobes.tech AI

Vastus AI-lt

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

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

Объяснение:

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

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

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

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

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