Sobes.tech
Junior — Middle

Jaké je maximální množství gorutin, které lze současně spustit v aplikaci?

sobes.tech AI

Odpověď od AI

V jazyce Go neexistuje přísné omezení maximálního počtu gorutin, které mohou být současně spuštěny. Teoreticky jich může být spuštěno velmi mnoho — desítky, stovky a někdy i miliony, v závislosti na systémových zdrojích (paměť, CPU).

Gorutiny jsou velmi lehké ve srovnání s vlákny operačního systému, protože používají dynamický zásobník, který roste podle potřeby.

Praktické omezení však závisí na:

  • Dostupném množství paměti (každá gorutina zabírá minimálně několik kilobajtů).
  • Logice aplikace a synchronizaci mezi gorutinami.
  • Zátěži plánovače Go.

Příklad spuštění velkého množství gorutin:

package main

import (
    "fmt"
    "sync"
)

func main() {
    var wg sync.WaitGroup
    const n = 100000
    wg.Add(n)

    for i := 0; i < n; i++ {
        go func(i int) {
            defer wg.Done()
            // jednoduchá práce
            _ = i * 2
        }(i)
    }

    wg.Wait()
    fmt.Println("Všechny gorutiny jsou dokončeny")
}

Tedy omezení je spíše praktické než systémové.