Senior
Решихте да напишете WaitGroup, защото се появи канал или защото решихте да напишете goroutines за нещо?
sobes.tech AI
Отговор от AI
WaitGroup в Go се използва за изчакване завършването на група горутини.
Ако имате няколко горутини, които изпълняват паралелни задачи, и трябва да изчакате те да приключат преди да продължите, WaitGroup е удобен инструмент.
Каналите и горутините са различни механизми. Каналът служи за комуникация и синхронизация между горутините, а WaitGroup — за изчакване на тяхното завършване.
Например, ако имате горутини за изпълнение на задачи и искате да изчакате всички да приключат, използвате WaitGroup:
var wg sync.WaitGroup
wg.Add(3) // очакваме 3 горутини
for i := 0; i < 3; i++ {
go func(id int) {
defer wg.Done()
// работа на горутината
fmt.Println("Горутина", id, "завърши")
}(i)
}
wg.Wait() // изчакваме всички горутини да приключат
По този начин, WaitGroup се използва точно защото има горутини, които трябва да се синхронизират при завършването им, а не заради появата на канали.