Sobes.tech
Junior — Middle

Kapcsolódik-e a létrehozott goroutine-ok száma a processzor magjainak számához?

sobes.tech MI

Válasz az MI-től

A Go-ban létrehozott goroutine-ok száma nem közvetlenül kapcsolódik a processzor magjainak számához. Nagyon sok goroutine-t hozhatsz létre — ezek könnyű szálak, amelyeket a Go futásideje kezel, és számukat elsősorban a rendelkezésre álló memória és a program logikája korlátozza.

A magok száma befolyásolja az operációs rendszer szálainak számát, amelyek egyszerre futtathatók, valamint a GOMAXPROCS paramétert, amely meghatározza a goroutine-ok párhuzamos végrehajtásának maximális számát. De a goroutine-ok száma általában jelentősen meghaladja a magok számát, mivel hatékonyan ütemezik és váltogatják őket a futásidőn belül.

Példa:

runtime.GOMAXPROCS(4) // 4 mag használata

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

Itt 1000 goroutine-t hoznak létre, míg csak 4 mag áll rendelkezésre.