Junior — Middle
Koji je maksimalni broj gorutina koje se mogu pokrenuti istovremeno u aplikaciji?
sobes.tech АИ
Одговор од АИ
U Go nema strogo ograničenje na maksimalni broj gorutina koje se mogu istovremeno pokrenuti. Teoretski, mogu se pokrenuti veoma mnoge — desetine, stotine, pa čak i milioni, u zavisnosti od resursa sistema (memorije, CPU).
Gorutine su veoma lagane u poređenju sa niti operativnog sistema, jer koriste dinamički stek koji raste po potrebi.
Međutim, praktično ograničenje zavisi od:
- Dostupne količine memorije (svaka gorutina zauzima najmanje nekoliko kilobajta).
- Logike aplikacije i sinhronizacije između gorutina.
- Opterećenja na planera Go.
Primer pokretanja velikog broja gorutina:
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()
// jednostavan posao
_ = i * 2
}(i)
}
wg.Wait()
fmt.Println("Sve gorutine su završile")
}
Dakle, ograničenje je više praktično nego sistemsko.