Sobes.tech
Junior — Middle

Vai radīto gorutinu skaits ir saistīts ar procesora kodolu skaitu?

sobes.tech AI

Atbilde no AI

Go izveidoto gorutīnu skaits nav tieši saistīts ar procesora kodolu skaitu. Jūs varat izveidot ļoti daudz gorutīnu — tās ir vieglas pavedieni, kurus pārvalda Go izpildlaiks, un to skaits galvenokārt ir ierobežots ar pieejamo atmiņu un programmas loģiku.

Kodu skaits ietekmē operētājsistēmas pavedienu skaitu, kas var darboties vienlaikus, kā arī GOMAXPROCS parametru, kas nosaka maksimālo pavedienu skaitu, kas paralēli izpilda gorutinas. Bet gorutīnu skaits parasti ievērojami pārsniedz kodolu skaitu, jo tās efektīvi plāno un pārslēdzas iekšā izpildlaikā.

Piemērs:

runtime.GOMAXPROCS(4) // Izmantojam 4 kodolus

for i := 0; i < 1000; i++ {
    go func(n int) {
        fmt.Println("Goroutine", n)
    }(i)
}
time.Sleep(time.Second)

Šeit tiek izveidotas 1000 gorutīnas, lai gan ir tikai 4 kodoli.