Назад к вопросам
Yadro
Middle+
5
Расскажи подробнее про WaitGroup: как работает, что делают Add, Done, Wait?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
WaitGroup в Go используется для ожидания завершения группы горутин.
- Add(n int) — увеличивает счетчик на n, обычно вызывается перед запуском горутин.
- Done() — уменьшает счетчик на 1, вызывается в горутине после завершения работы.
- Wait() — блокирует выполнение до тех пор, пока счетчик не станет равен нулю, то есть пока все горутины не вызовут Done.
Пример:
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 помогает синхронизировать параллельные задачи и дождаться их окончания.