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.