Junior — Middle
Ar kuriantų gorutinų skaičius yra susijęs su procesoriaus branduolių skaičiumi?
sobes.tech AI
Atsakymas iš AI
Go kalėje sukurtų gorutinos skaičius nėra tiesiogiai susijęs su procesoriaus branduolių skaičiumi. Galite sukurti daug gorutinos — jos yra lengvi siūlai, valdomi Go vykdymo laiko, ir jų skaičius daugiausia ribojamas turimos atminties ir programos logikos.
Branduolių skaičius veikia operacinės sistemos siūlų, kurie gali būti vykdomi vienu metu, skaičių, taip pat parametrą GOMAXPROCS, kuris nustato maksimalų siūlų skaičių, vykdančių gorutinas paraleliai. Tačiau gorutinos dažnai žymiai viršija branduolių skaičių, nes jos efektyviai planuojamos ir perjungiamas jų vykdymas viduje.
Pavyzdys:
runtime.GOMAXPROCS(4) // Naudojame 4 branduolius
for i := 0; i < 1000; i++ {
go func(n int) {
fmt.Println("Goroutine", n)
}(i)
}
time.Sleep(time.Second)
Čia sukuriama 1000 gorutina, nors yra tik 4 branduoliai.