Sobes.tech
Junior — Middle

Jak je při spuštění rozděleno čtyři gorutiny na čtyři procesorové jádra?

sobes.tech AI

Odpověď od AI

V Go, plánovač gorutin (Goroutine scheduler) rozděluje gorutiny mezi systémové vlákna (M), která jsou naopak vázána na jádra procesoru.

Pokud máte 4 gorutiny a 4 jádra procesoru, může plánovač při spuštění rozdělit každou gorutinu na samostatné jádro, což umožňuje paralelní vykonávání. To je možné, pokud je proměnná prostředí GOMAXPROCS nastavena na 4 (v moderních verzích Go je ve výchozím nastavení rovna počtu dostupných jader).

Příklad:

runtime.GOMAXPROCS(4) // nastaví počet dostupných vláken na 4

for i := 0; i < 4; i++ {
    go func(id int) {
        fmt.Printf("Goroutine %d spuštěna\n", id)
        // práce
    }(i)
}

Planovač Go bude rozdělovat gorutiny mezi vlákna, která mohou být vykonávána na různých jádrech, což umožňuje efektivní využití multiprocesorových systémů. Přesné rozdělení však závisí na zatížení systému a vnitřním plánovači.