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 не отклоняет создание горутин с паникой при превышении их числа.
Поэтому при большом числе горутин рекомендуется использовать пул воркеров, чтобы ограничить количество одновременно активных горутин и снизить накладные расходы.