Která z následujících možností je nejpravděpodobnější, že se stane při pokusu spustit velmi velké množství gorutin (například desetitisíce) bez další kontroly? - Hlavním problémem bude zablokování globálního mutexu uvnitř runtime, což povede k úplnému zastavení běhu programu - Plánovač Go bude gorutiny vykonávat v malých skupinách sekvenčně, takže růst jejich počtu téměř neovlivní spotřebu paměti - Masové vytváření gorutin může vést k významné spotřebě paměti a dodatečným nákladům plánovače; v takových případech je vhodný pracovní pool - Pokud počet gorutin přesáhne počet logických procesorů, Go automaticky začne odmítat nové spuštění gorutin s panikou
sobes.tech AI
Odpověď od AI
Правильный ответ:
- Массовое порождение горутин может привести к значительному расходу памяти и накладным расходам планировщика; в таких случаях уместен пул воркеров
Объяснение:
Горутины в Go — это легковесные потоки, но они всё равно потребляют память (стек, структуры планировщика). При запуске десятков тысяч горутин без контроля может значительно вырасти потребление памяти и нагрузка на планировщик.
Go не блокирует глобальный mutex при планировании горутин, планировщик эффективно переключается между ними.
Планировщик не выполняет горутины строго последовательно малыми группами, а распределяет их по доступным логическим процессорам (GOMAXPROCS).
Go не отклоняет создание горутин с паникой при превышении их числа.
Поэтому при большом числе горутин рекомендуется использовать пул воркеров, чтобы ограничить количество одновременно активных горутин и снизить накладные расходы.