Sobes.tech
Junior — Middle

Je počet vytvorených gorútinov spojený s počtom jadier v procesore?

sobes.tech AI

Odpoveď od AI

Počet gorutín vytváraných v Go nie je priamo spojený s počtom jadier procesora. Môžete vytvoriť veľa gorutín — sú to ľahké vlákna spravované runtime prostredím Go, a ich počet je hlavne obmedzený dostupnou pamäťou a logikou programu.

Počet jadier ovplyvňuje počet vlákien operačného systému, ktoré môžu byť súčasne spustené, a parameter GOMAXPROCS, ktorý určuje maximálny počet vlákien vykonávajúcich gorutiny paralelne. Ale počet gorutín zvyčajne výrazne prevyšuje počet jadier, pretože sú efektívne plánované a prepínané v rámci runtime.

Príklad:

runtime.GOMAXPROCS(4) // Používame 4 jadrá

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

Tu sa vytvorí 1000 gorutín, hoci je dostupných len 4 jadrá.