Sobes.tech
Senior

Защо ни е необходим WaitGroup в тази задача?

sobes.tech AI

Отговор от AI

WaitGroup в Go се използва за синхронизиране на горутините. В задачи, където се стартират няколко горутини, 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() // чакаме всички горутини да завършат
fmt.Println("Всички горутини са завършили")

По този начин, WaitGroup осигурява правилна координация и предотвратява гонки или преждевременно приключване на програмата.