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.