Junior — Middle
თქვენ გამოიყენეთ სინქრონიზაციის მექანიზმი sync.WaitGroup-ის გამოყენებით თქვენს პროექტებში?
sobes.tech AI
პასუხი AI-სგან
დიახ, Go პროექტებში ხშირად გამოიყენება sync.WaitGroup გორუტინების სინქრონიზაციისთვის. ეს მექანიზმი საშუალებას აძლევს დაელოდოს პარალელური დავალებების ჯგუფის დასრულებას წინადადების გაგრძელებამდე.
მუშაობის პრინციპი:
- შეიქმნება
WaitGroupობიექტი. - თითოეული გორუტინის დაწყებამდე გამოიძახება
Add(1), რათა გაიზარდოს გამოთვლითი სია. - გორუტინის შიგნით, სამუშაოს დასრულების შემდეგ, გამოიძახება
Done(), რაც ამცირებს გამოთვლით სიის მნიშვნელობას. - მთავარი გორუტინა გამოიძახებს
Wait(), რომელიც ბლოკავს, სანამ გამოთვლითი სია არ გახდება ნული.
მაგალითი:
var wg sync.WaitGroup
wg.Add(2) // ველით 2 გორუტინას
go func() {
defer wg.Done()
// პირველი გორუტინის სამუშაო
}()
go func() {
defer wg.Done()
// მეორე გორუტინის სამუშაო
}()
wg.Wait() // ველით ორივეს დასრულებას
ეს სასარგებლოა პარალელური ოპერაციების კოორდინაციისთვის და პროგრამის ადრე დასრულების თავიდან ასაცილებლად.