Sobes.tech
Intern

¿Cuál de las siguientes opciones es más probable que ocurra al intentar lanzar una gran cantidad de goroutines (por ejemplo, decenas de miles) sin control adicional? - El problema principal será causado por el bloqueo del mutex global dentro del runtime, lo que llevará a una parada completa de la ejecución del programa - El planificador de Go ejecutará las goroutines en pequeños grupos de manera secuencial, por lo que el aumento en su número casi no afectará el consumo de memoria - La creación masiva de goroutines puede llevar a un consumo significativo de memoria y a gastos adicionales del planificador; en tales casos, es apropiado usar un pool de workers - Si el número de goroutines supera el número de procesadores lógicos, Go comenzará automáticamente a rechazar nuevas ejecuciones de goroutines con un pánico

sobes.tech AI

Respuesta de la IA

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

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

Объяснение:

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

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

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

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

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