Junior — Middle
Vysvětlete, proč nelze přímo přiřadit počet vláken k počtu gorutin v Go.
sobes.tech AI
Odpověď od AI
V jazyce Go počet gorutin neodpovídá počtu vláken operačního systému, protože gorutiny jsou lehké vlákna řízená běhovým prostředím Go, nikoliv operačním systémem.
Hlavní důvody:
- Multiplexování: Běhové prostředí Go rozděluje mnoho gorutin na omezený počet systémových vláken a efektivně mezi nimi přepíná.
- Lehkost: Vytvoření gorutiny vyžaduje mnohem méně zdrojů než vytvoření systémového vlákna.
- Plánovač Go: Řídí vykonávání gorutin, umožňující tisícům z nich pracovat na více vláknech.
Z tohoto důvodu nelze přímo přiřadit počet gorutin k počtu vláken — obvykle na jedno vlákno připadá mnoho gorutin, což umožňuje efektivní využití zdrojů a zjednodušení konkurenčního programování.
Příklad:
runtime.GOMAXPROCS(4) // Nastaví počet systémových vláken
for i := 0; i < 1000; i++ {
go func(id int) {
fmt.Println("Goroutine", id)
}(i)
}
Zde budou 1000 gorutin pracovat na 4 systémových vláknech.