Sobes.tech
Intern

Ktorá z nasledujúcich možností je najpravdepodobnejšia, že sa stane pri pokuse spustiť veľmi veľké množstvo gorút (napríklad desaťtisíce) bez ďalšej kontroly? - Hlavným problémom bude zablokovanie globálneho mutexu v rámci runtime, čo povedie k úplnému zastaveniu vykonávania programu - Plánovač Go bude vykonávať gorutiny v malých skupinách sekvenčne, takže rast ich počtu takmer neovplyvní spotrebu pamäte - Masové vytváranie gorút môže viesť k významnej spotrebe pamäte a dodatočným nákladom plánovača; v takých prípadoch je vhodný pracovný pool - Ak počet gorút prekročí počet logických procesorov, Go automaticky začne odmietať nové spustenia gorút s panikou

sobes.tech AI

Odpoveď od AI

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

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

Объяснение:

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

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

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

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

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