Junior — Middle
Go-da WaitGroup istifadə edərək bir neçə goroutine-in tamamlanmasını gözləmə mexanizminin necə işlədiyini izah edə bilərsinizmi?
sobes.tech Süni İntellekt
AI-dan cavab
Go-da, bir neçə goroutin'in tamamlanmasını gözləmək üçün sync.WaitGroup tipi istifadə olunur. Bu, bir neçə goroutin'ə "abunə olmağa" və hamısı tamamlanana qədər icraatı bloklamağa imkan verir.
WaitGroup-in əsas metodları:
- Add(n int) — sayacı n qədər artırır, adətən goroutin'lər başlamazdan əvvəl çağırılır.
- Done() — sayacı 1 azaldır, hər goroutin'in sonunda ç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 goroutin gözləyirik
for i := 0; i < 3; i++ {
go func(id int) {
defer wg.Done() // tamamlandığını bildir
fmt.Printf("Goroutine %d işləyir\n", id)
// bəzi işlər
}(i)
}
wg.Wait() // bütün goroutin'lərin tamamlanmasını gözləyirik
fmt.Println("Bütün goroutin'lər tamamlandı")