Фиксированного небольшого лимита горутин в Go нет, но их число ограничено памятью и ресурсами процесса. Миллион горутин может создать серьёзную нагрузку даже при малом начальном стеке.
Есть ли ограничение на количество одновременно запускаемых горутин? Что будет при запуске миллиона горутин?
Фиксированного небольшого лимита горутин в Go нет, но их число ограничено памятью и ресурсами процесса. Миллион горутин может создать серьёзную нагрузку даже при малом начальном стеке.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Фиксированного небольшого лимита горутин в Go нет, но их число ограничено памятью и ресурсами процесса. Миллион горутин может создать серьёзную нагрузку даже при малом начальном стеке.
Помимо стека учитывайте захваченные данные, очередь планировщика, GC, соединения и файловые дескрипторы. Горутины не равны одновременно работающим CPU-потокам. Ограничивайте конкурентность пулом работников или семафором и предусматривайте отмену. Оценивать безопасность нужно измерениями, а не утверждением, что горутины «почти бесплатны».