Junior — Middle
Jaké je maximální množství gorutin, které lze spustit současně bez zásadních problémů pro systém?
sobes.tech AI
Odpověď od AI
V jazyce Go závisí maximální počet současně spuštěných gorutin na systémových zdrojích (operační paměť, čas CPU) a na povaze úkolů, které vykonávají. Teoreticky je možné spustit stovky tisíc nebo dokonce miliony gorutin, protože jsou velmi lehké ve srovnání s vlákny OS.
Nicméně v praxi:
- Pokud gorutiny aktivně využívají CPU, příliš velký počet povede ke snížení výkonu kvůli přepínání kontextu.
- Pokud gorutiny blokují při vstupu/výstupu nebo čekají na události, může jich být mnohem více bez podstatných problémů.
Obvykle v reálných aplikacích se spouští od několika stovek do několika tisíc gorutin bez problémů. Pokud je potřeba škálovat, je vhodné profilovat aplikaci a sledovat spotřebu paměti a zatížení CPU.
Příklad tvorby velkého počtu gorutin:
for i := 0; i < 100000; i++ {
go func(n int) {
// nějaká práce
fmt.Println(n)
}(i)
}