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