Sobes.tech
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.