Junior — Middle
Aké je maximálne množstvo gorutín, ktoré je možné spustiť súčasne bez vážnych problémov pre systém?
sobes.tech AI
Odpoveď od AI
V jazyku Go závisí maximálny početok súčasne spustených gorútin od systémových zdrojov (RAM, CPU čas) a od povahy úloh, ktoré vykonávajú. Teoreticky je možné spustiť státisíce alebo dokonca milióny gorútin, pretože sú veľmi ľahké v porovnaní s vláknami OS.
Avšak v praxi:
- Ak gorutiny aktívne využívajú CPU, príliš veľký počet povedie k zníženiu výkonu kvôli prepínaniu kontextov.
- Ak gorutiny blokujú pri vstupe/výstupe alebo čakajú na udalosti, môže ich byť oveľa viac bez podstatných problémov.
Zvyčajne v reálnych aplikáciách sa spúšťajú od niekoľkých stoviek do niekoľkých tisíc gorútin bez problémov. Pri potrebe škálovania je vhodné profilovať aplikáciu a sledovať spotrebu pamäte a zaťaženie CPU.
Príklad vytvorenia veľkého počtu gorútin:
for i := 0; i < 100000; i++ {
go func(n int) {
// nejaká práca
fmt.Println(n)
}(i)
}