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é.