Sobes.tech
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 ეხმარება პარალელური დავალებების სინქრონიზაციას და მათი დასრულების მოლოდინს.