Sobes.tech
Intern

Aşa aşağıdakilerden hangisi, ek kontrol olmadan çok büyük sayıda goroutine (örneğin, on binlerce) başlatmaya çalışırken en olası olanıdır? - Ana sorun, çalışma zamanı içindeki küresel mutex'in kilitlenmesinden kaynaklanacak ve bu, programın tamamen durmasına neden olacaktır - Go planlayıcısı, goroutine'leri küçük gruplar halinde sıralı olarak çalıştıracak, bu nedenle sayılarının artması bellek kullanımını neredeyse etkilemeyecektir - Çok sayıda goroutine oluşturmak, önemli ölçüde bellek kullanımı ve planlayıcı üzerinde ek maliyetlere yol açabilir; bu durumlarda bir işçi havuzu uygundur - Goroutine sayısı, mantıksal işlemci sayısını aşarsa, Go otomatik olarak yeni goroutine başlatmalarını panik ile reddedecektir

sobes.tech Süni İntellekt

AI-dan cavab

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

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

Объяснение:

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

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

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

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

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