Junior — Middle
Go dilində WaitGroup strukturu goroutine-lərin sinxronizasiyası üçün hansı funksiyaları təmin edir?
sobes.tech Süni İntellekt
AI-dan cavab
Go dilində, sync.WaitGroup strukturu çox sayda goroutine-i sinxronlaşdırmaq üçün istifadə olunur və əsas goroutine-in digər goroutine-lərin tamamlanmasını gözləməsinə imkan verir.
WaitGroup-un əsas metodları:
-
Add(delta int)— gözlənilən goroutine-lərin sayını artırır və ya azaldır. Adətən, goroutine-lər başlamazdan əvvəl çağırılır. -
Done()— sayacı 1-ə azaldır, goroutine-in işi bitdikdə çağırılır. -
Wait()— sayac 0 olana qədər icraatı bloklayır.
İstifadə nümunəsi:
var wg sync.WaitGroup
wg.Add(3) // 3 goroutine gözləyirik
for i := 0; i < 3; i++ {
go func(id int) {
defer wg.Done() // tamamlandığını bildirir
fmt.Println("Goroutine", id)
}(i)
}
wg.Wait() // bütün goroutine-lərin tamamlanmasını gözləyirik
fmt.Println("Bütün goroutine-lər tamamlandı")
Bu şəkildə, WaitGroup paralel icraatı koordine etməyə kömək edir və proqramın erkən bitməsinin qarşısını alır.