Sobes.tech
Junior — Middle

Aký je maximálny počet gorutín, ktoré je možné spustiť súčasne v aplikácii?

sobes.tech AI

Odpoveď od AI

V jazyku Go neexistuje prísne obmedzenie maximálneho počtu gorutín, ktoré môžu byť súčasne spustené. Teoreticky ich môže byť veľmi veľa — desaťtisíce, státisíce a niekedy aj milióny, v závislosti od systémových zdrojov (pamäť, CPU).

Gorutiny sú veľmi ľahké v porovnaní s vláknami operačného systému, pretože používajú dynamickú zásobník, ktorý rastie podľa potreby.

Praktické obmedzenie však závisí od:

  • Dostupného množstva pamäte (každá gorutina zaberá minimálne niekoľko kilobajtov).
  • Logiky aplikácie a synchronizácie medzi gorutinami.
  • Zaťaženia plánovača Go.

Príklad spustenia veľkého počtu gorutín:

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áca
            _ = i * 2
        }(i)
    }

    wg.Wait()
    fmt.Println("Všetky gorutiny sú dokončené")
}

Preto je obmedzenie skôr praktické než systémové.