Laquelle des options suivantes est la plus probable de se produire lors de la tentative de lancer un très grand nombre de goroutines (par exemple, des dizaines de milliers) sans contrôle supplémentaire? - Le problème principal sera causé par le verrouillage du mutex global dans le runtime, ce qui entraînera un arrêt complet de l'exécution du programme - Le planificateur de Go exécutera les goroutines en petits groupes de manière séquentielle, donc leur nombre croissant n'affectera presque pas la consommation de mémoire - La création massive de goroutines peut entraîner une consommation importante de mémoire et des coûts supplémentaires pour le planificateur; dans de tels cas, un pool de workers est approprié - Si le nombre de goroutines dépasse le nombre de processeurs logiques, Go commencera automatiquement à rejeter de nouvelles exécutions de goroutines avec une panique
sobes.tech IA
Réponse de l'IA
Правильный ответ:
- Массовое порождение горутин может привести к значительному расходу памяти и накладным расходам планировщика; в таких случаях уместен пул воркеров
Объяснение:
Горутины в Go — это легковесные потоки, но они всё равно потребляют память (стек, структуры планировщика). При запуске десятков тысяч горутин без контроля может значительно вырасти потребление памяти и нагрузка на планировщик.
Go не блокирует глобальный mutex при планировании горутин, планировщик эффективно переключается между ними.
Планировщик не выполняет горутины строго последовательно малыми группами, а распределяет их по доступным логическим процессорам (GOMAXPROCS).
Go не отклоняет создание горутин с паникой при превышении их числа.
Поэтому при большом числе горутин рекомендуется использовать пул воркеров, чтобы ограничить количество одновременно активных горутин и снизить накладные расходы.