Junior — Middle
Свързан ли е броят на създаваните горутини с броя ядра в процесора?
sobes.tech AI
Отговор от AI
Броят на създаваните горутини в Go не е пряко свързан с броя на ядрата на процесора. Може да създадете много горутини — те са леки потоци, управлявани от рантайма на Go, и техният брой е предимно ограничен от наличната памет и логиката на програмата.
Броят на ядрата влияе върху броя на операционните системни потоци, които могат да се изпълняват едновременно, както и на параметъра GOMAXPROCS, който задава максималния брой потоци, изпълняващи горутини паралелно. Но броят на горутините обикновено значително надвишава броя на ядрата, тъй като те се планират и превключват ефективно вътре в рантайма.
Пример:
runtime.GOMAXPROCS(4) // Използваме 4 ядра
for i := 0; i < 1000; i++ {
go func(n int) {
fmt.Println("Goroutine", n)
}(i)
}
time.Sleep(time.Second)
Тук се създават 1000 горутини, въпреки че има само 4 ядра.