Сколько горутин можно запустить параллельно

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

Ответ

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

Горутины — это легковесные потоки, и их можно создавать миллионы, но реальная параллельность зависит от GOMAXPROCS. Например, на 4-ядерном CPU с GOMAXPROCS=4 до 4 горутин могут выполняться одновременно.

Пример:

runtime.GOMAXPROCS(4) // Устанавливаем 4 потока
for i := 0; i < 1_000_000; i++ {
    go func() {
        // Работа горутины
    }()
}

Здесь создаётся миллион горутин, но одновременно выполняются только 4. Остальные ждут в очереди.