Sobes.tech
Junior — Middle

Da li je broj kreiranih gorutina povezan sa brojem jezgara u procesoru?

sobes.tech АИ

Одговор од АИ

Broj gorutina koje se kreiraju u Go-u nije direktno povezan sa brojem jezgara procesora. Možete kreirati mnogo gorutina — to su lagani threadovi koje upravlja Go runtime, i njihov broj je uglavnom ograničen dostupnom memorijom i logikom programa.

Broj jezgara utiče na broj niti operativnog sistema koje mogu istovremeno da se izvršavaju, kao i na parametar GOMAXPROCS, koji određuje maksimalan broj niti koje izvršavaju gorutine paralelno. Ali, broj gorutina obično znatno premašuje broj jezgara, jer se efikasno planiraju i prebacuju unutar runtime-a.

Primer:

runtime.GOMAXPROCS(4) // Koristimo 4 jezgra

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

Ovde se kreira 1000 gorutina, iako je dostupno samo 4 jezgra.