Middle+
მითხარით მეტი WaitGroup-ის შესახებ: როგორ მუშაობს, რა აკეთებს Add, Done, Wait?
sobes.tech AI
პასუხი AI-სგან
Go-ში WaitGroup გამოიყენება ჯგუფის goroutines-ის დასრულების მოსალოდნელად.
- Add(n int) — ზრდის გამოთვლას n-ით, ჩვეულებრივ გამოიძახება goroutine-ების დაწყებამდე.
- Done() — ამცირებს გამოთვლას 1-ით, გამოიძახება goroutine-ის შიგნით სამუშაოს დასრულების შემდეგ.
- Wait() — ბლოკავს შესრულებას მანამ, სანამ გამოთვლილი არ გახდება ნული, ანუ სანამ ყველა goroutine-ი არ გამოიძახებს Done-ს.
მაგალითი:
var wg sync.WaitGroup
wg.Add(3) // ველით 3 goroutine-ს
for i := 0; i < 3; i++ {
go func(id int) {
defer wg.Done()
fmt.Println("Goroutine", id, "დასრულდა")
}(i)
}
wg.Wait() // ველით ყველა goroutine-ის დასრულებას
fmt.Println("ყველა goroutine დასრულდა")
ამ გზით, WaitGroup ეხმარება პარალელური დავალებების სინქრონიზაციას და მათი დასრულების მოლოდინს.