Назад к вопросам
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.