Sobes.tech
Назад к вопросам
Junior — Middle
82

Связано ли число создаваемых горутин с числом ядер в процессоре?

Компании, где спрашивали
Кадровое агентство BWG

Ответ от нейросети

sobes.tech AI

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

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

Пример:

runtime.GOMAXPROCS(4) // Используем 4 ядра

for i := 0; i < 1000; i++ {
    go func(n int) {
        fmt.Println("Горутина", n)
    }(i)
}
time.Sleep(time.Second)

Здесь создаётся 1000 горутин, хотя ядер всего 4.