Care dintre următoarele opțiuni este cel mai probabil să se întâmple atunci când încerci să lansezi un număr foarte mare de goroutines (de exemplu, zeci de mii) fără control suplimentar? - Problema principală va fi cauzată de blocarea mutex-ului global din runtime, ceea ce va duce la oprirea completă a execuției programului - Planificatorul Go va executa goroutine-urile în grupuri mici în mod secvențial, astfel creșterea numărului lor aproape că nu va afecta consumul de memorie - Crearea masivă de goroutine poate duce la un consum semnificativ de memorie și la costuri suplimentare ale planificatorului; în astfel de cazuri, un pool de workeri este adecvat - Dacă numărul de goroutine depășește numărul procesoarelor logice, Go va începe automat să respingă noile lansări de goroutine cu un panic
sobes.tech AI
Răspuns de la AI
Правильный ответ:
- Массовое порождение горутин может привести к значительному расходу памяти и накладным расходам планировщика; в таких случаях уместен пул воркеров
Объяснение:
Горутины в Go — это легковесные потоки, но они всё равно потребляют память (стек, структуры планировщика). При запуске десятков тысяч горутин без контроля может значительно вырасти потребление памяти и нагрузка на планировщик.
Go не блокирует глобальный mutex при планировании горутин, планировщик эффективно переключается между ними.
Планировщик не выполняет горутины строго последовательно малыми группами, а распределяет их по доступным логическим процессорам (GOMAXPROCS).
Go не отклоняет создание горутин с паникой при превышении их числа.
Поэтому при большом числе горутин рекомендуется использовать пул воркеров, чтобы ограничить количество одновременно активных горутин и снизить накладные расходы.