Sobes.tech
Middle+

WaitGroup hakkında daha fazla bilgi ver: nasıl çalışır, Add, Done, Wait ne yapar?

sobes.tech yapay zeka

AI'dan gelen yanıt

Go'da WaitGroup, bir grup goroutine'nin tamamlanmasını beklemek için kullanılır.

  • Add(n int) — sayacı n kadar artırır, genellikle goroutine'leri başlatmadan önce çağrılır.
  • Done() — sayacı 1 azaltır, iş tamamlandıktan sonra goroutine içinde çağrılır.
  • Wait() — sayaç sıfır olana kadar yürütmeyi engeller, yani tüm goroutine'ler Done çağırana kadar bekler.

Örnek:

var wg sync.WaitGroup
wg.Add(3) // 3 goroutine bekleniyor

for i := 0; i < 3; i++ {
    go func(id int) {
        defer wg.Done()
        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 paralel görevleri senkronize etmeye ve tamamlanmalarını beklemeye yardımcı olur.