Назад к вопросам
Senior
10
Ты добавляешь WaitGroup, чтобы что?
Компании, где спрашивали
Cloud.ru
Ответ от нейросети
sobes.tech AI
WaitGroup в Go используется для синхронизации нескольких горутин. Его основная задача — ждать завершения набора горутин перед продолжением выполнения основной программы.
Когда ты запускаешь несколько горутин, чтобы убедиться, что все они завершились, добавляешь в WaitGroup количество ожидаемых горутин с помощью Add(n). Каждая горутина после завершения вызывает Done(), уменьшая счётчик. Основная горутина вызывает Wait(), которая блокируется, пока счётчик не станет нулём.
Пример:
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() // ждем, пока все горутины вызовут Done
fmt.Println("Все горутины завершены")
Таким образом, WaitGroup помогает избежать преждевременного завершения программы и гарантирует, что все параллельные задачи выполнены.