Junior — Middle
Jaka jest maksymalna liczba goroutines, które można uruchomić jednocześnie w aplikacji?
sobes.tech AI
Odpowiedź od AI
W Go nie ma ścisłego ograniczenia na maksymalną liczbę gorutyn uruchamianych jednocześnie. Teoretycznie można uruchomić ich bardzo dużo — dziesiątki, setki, a czasem miliony, w zależności od zasobów systemu (pamięć, CPU).
Gorutiny są bardzo lekkie w porównaniu do wątków systemu operacyjnego, ponieważ korzystają z dynamicznego stosu, który rośnie w razie potrzeby.
Jednak praktyczne ograniczenie zależy od:
- Ilości dostępnej pamięci (każda gorutyna zajmuje co najmniej kilka kilobajtów).
- Logiki aplikacji i synchronizacji między gorutynami.
- Obciążenia planisty Go.
Przykład uruchomienia dużej liczby gorutyn:
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()
// prosta praca
_ = i * 2
}(i)
}
wg.Wait()
fmt.Println("Wszystkie gorutiny zakończone")
}
Zatem ograniczenie jest bardziej praktyczne niż systemowe.