Зависит ли количество горутин от количества ядер процессора

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

Ответ

Количество горутин не зависит напрямую от количества ядер процессора. Горутины — это легковесные потоки, управляемые рантаймом Go. Они могут работать на одном ядре или масштабироваться на несколько.

Количество одновременно выполняемых горутин ограничено настройками планировщика (GOMAXPROCS), который по умолчанию использует все доступные ядра. Однако горутин может быть гораздо больше, чем ядер — планировщик эффективно переключает их между потоками ОС.

Пример:

func main() {
    for i := 0; i < 10000; i++ {
        go func() { 
            // работа горутины
        }()
    }
    // Горутины будут распределены по доступным ядрам
    time.Sleep(time.Second)
}