Sobes.tech
Intern

Welke van de volgende opties is het meest waarschijnlijk om te gebeuren bij het proberen te starten van een zeer groot aantal goroutines (bijvoorbeeld tienduizenden) zonder aanvullende controle? - Het belangrijkste probleem wordt veroorzaakt door het blokkeren van de globale mutex binnen de runtime, wat zal leiden tot een volledige stop van de uitvoering van het programma - De Go-scheduler zal de goroutines in kleine groepen sequentieel uitvoeren, dus de groei van hun aantal heeft bijna geen invloed op het geheugenverbruik - Massale creatie van goroutines kan leiden tot aanzienlijk geheugenverbruik en overhead van de scheduler; in dergelijke gevallen is een worker pool geschikt - Als het aantal goroutines het aantal logische processors overschrijdt, zal Go automatisch nieuwe goroutine-starts met een panic afwijzen

sobes.tech AI

Antwoord van AI

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

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

Объяснение:

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

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

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

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

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