Sobes.tech
Junior — Middle

Je počet počtu vytvářených gorutin spojen s počtem jader v procesoru?

sobes.tech AI

Odpověď od AI

Počet gorutin vytvářených v Go není přímo spojen s počtem jader procesoru. Můžete vytvořit mnoho gorutin — jsou to lehké vlákna řízená runtime prostředím Go, a jejich počet je hlavně omezen dostupnou pamětí a logikou programu.

Počet jader ovlivňuje počet vláken operačního systému, které mohou být současně spuštěny, a parametr GOMAXPROCS, který určuje maximální počet vláken vykonávajících gorutiny paralelně. Ale počet gorutin obvykle výrazně převyšuje počet jader, protože jsou efektivně plánovány a přepínány v rámci runtime.

Příklad:

runtime.GOMAXPROCS(4) // Používáme 4 jádra

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

Zde je vytvořeno 1000 gorutin, i když je k dispozici pouze 4 jádra.