Junior — Middle
რა ფუნქციებს უზრუნველყოფს WaitGroup სტრუქტურა Go ენისთვის გორუტინების სინქრონიზაციისთვის?
sobes.tech AI
პასუხი AI-სგან
Go ენის ფარგლებში, sync.WaitGroup სტრუქტურა გამოიყენება რამდენიმე goroutine-ის სინქრონიზაციისთვის, რაც საშუალებას აძლევს მთავარ goroutine-ს დაელოდოს სხვა goroutine-ების დასრულებას.
WaitGroup-ის ძირითადი მეთოდები:
-
Add(delta int)— ზრდის ან ამცირებს ელოდებოდეgoroutine-ების რაოდენობას. ჩვეულებრივ, იძახება goroutine-ების დაწყებამდე. -
Done()— ამცირებს გამოთვლას 1-ით, იძახება goroutine-ის მუშაობის დასრულებისას. -
Wait()— ბლოკავს შესრულებას მანამ, სანამ გამოთვლა არ გახდება ნული.
გამოყენების მაგალითი:
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 ეხმარება პარალელური შესრულების კოორდინაციაში და უზრუნველყოფს, რომ პროგრამა ადრე არ დასრულდეს.