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.