Sobes.tech
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)
}