Sobes.tech
Junior — Middle

Bir uygulamada aynı anda kaç tane goroutine çalıştırılabilir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Go dilinde aynı anda çalışan goroutine sayısı üzerinde katı bir sınır yoktur. Teorik olarak çok fazla — onlarca, yüzlerce ve hatta milyonlarca — başlatılabilir, sistem kaynaklarına (bellek, CPU) bağlıdır.

Goroutine'ler, işletim sistemi thread'lerine kıyasla çok hafiftir çünkü ihtiyaç duyulduğunda büyüyen dinamik bir yığın kullanırlar.

Ancak, pratik sınır şu faktörlere bağlıdır:

  • Mevcut bellek miktarı (her goroutine en az birkaç kilobyte kaplar).
  • Uygulama mantığı ve goroutine'ler arasındaki senkronizasyon.
  • Go planlayıcısına yük.

Birçok goroutine başlatma örneği:

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()
            // basit iş
            _ = i * 2
        }(i)
    }

    wg.Wait()
    fmt.Println("Tüm goroutine'ler tamamlandı")
}

Bu nedenle, sınır daha çok pratik olup sistemsel değildir.