Есть ли ограничение на количество созданных горутин

«Есть ли ограничение на количество созданных горутин» — вопрос из категории Golang, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Go нет жесткого ограничения на количество горутин, но есть практические лимиты, связанные с ресурсами системы (память, CPU).

  • Теоретически: можно создать миллионы горутин, т.к. они легковесные (начальный стек ~2KB, растет динамически).
  • Практически: упирается в доступную память и планировщик.

Пример с созданием 100k горутин:

func main() {
    for i := 0; i < 100_000; i++ {
        go func(n int) {
            fmt.Println(n)
        }(i)
    }
    time.Sleep(time.Second) // даем время на выполнение
}

Проблемы при злоупотреблении:

  • Потребление памяти
  • Нагрузка на планировщик
  • Конкуренция за ресурсы

Рекомендуется использовать worker pools или semaphore pattern для контроля количества.