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.