Sobes.tech
Junior — Middle

Ile maksymalnie goroutines można uruchomić jednocześnie bez poważnych problemów dla systemu?

sobes.tech AI

Odpowiedź od AI

W Go maksymalna liczba jednoczesnych goroutines zależy od zasobów systemowych (pamięci RAM, czasu procesora) oraz charakteru wykonywanych zadań. Teoretycznie można uruchomić setki tysięcy, a nawet miliony goroutines, ponieważ są one bardzo lekkie w porównaniu do wątków systemu operacyjnego.

Jednak w praktyce:

  • Jeśli goroutines aktywnie korzystają z CPU, zbyt duża ich liczba może obniżyć wydajność z powodu przełączania kontekstu.
  • Jeśli goroutines blokują się na operacjach wejścia/wyjścia lub oczekują na zdarzenia, ich liczba może być znacznie większa bez poważnych problemów.

Zazwyczaj w rzeczywistych aplikacjach uruchamia się od kilku setek do kilku tysięcy goroutines bez problemów. W razie potrzeby skalowania warto profilować aplikację i monitorować zużycie pamięci oraz obciążenie CPU.

Przykład tworzenia dużej liczby goroutines:

for i := 0; i < 100000; i++ {
    go func(n int) {
        // jakaś praca
        fmt.Println(n)
    }(i)
}