Sobes.tech
Junior — Middle

Go dilinde WaitGroup yapısının goroutine'leri senkronize etmek için sağladığı fonksiyonlar nelerdir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Go dilinde, sync.WaitGroup yapısı, birkaç goroutine'yi senkronize etmek için kullanılır ve ana goroutine'nin diğerlerinin tamamlanmasını beklemesine olanak tanır.

WaitGroup'un temel yöntemleri:

  • Add(delta int) — beklenen goroutine sayısını artırır veya azaltır. Genellikle goroutine'ler başlatılmadan önce çağrılır.

  • Done() — sayacı 1 azaltır, goroutine'nin işi bittiğinde çağrılır.

  • Wait() — sayaç sıfır olana kadar yürütmeyi engeller.

Kullanım örneği:

var wg sync.WaitGroup

wg.Add(3) // 3 goroutine bekleniyor

for i := 0; i < 3; i++ {
    go func(id int) {
        defer wg.Done() // tamamlandığını sinyal et
        fmt.Println("Goroutine", id)
    }(i)
}

wg.Wait() // tüm goroutine'lerin tamamlanmasını bekle
fmt.Println("Tüm goroutine'ler tamamlandı")

Bu şekilde, WaitGroup paralel yürütmeyi koordine etmeye yardımcı olur ve programın erken bitmesini engeller.