Sobes.tech
Senior

Bu görevde neden WaitGroup'e ihtiyacımız var?

sobes.tech yapay zeka

AI'dan gelen yanıt

Go'da WaitGroup, goroutine'leri senkronize etmek için kullanılır. Birden fazla goroutine başlatıldığında, WaitGroup ana akışın tüm başlatılan goroutine'lerin tamamlanmasını beklemesine olanak tanır ve böylece programın erken çıkmasını veya arka plan işlemleri tamamlanmadan bir sonraki adıma geçmesini 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ı bildir
        // goroutine işi
        fmt.Println("Goroutine", id, "tamamlandı")
    }(i)
}

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

Bu şekilde, WaitGroup doğru koordinasyonu sağlar ve yarış koşullarını veya programın erken sonlanmasını önler.