Sobes.tech
Назад к вопросам
Middle+
5

Расскажи подробнее про WaitGroup: как работает, что делают Add, Done, Wait?

Компании, где спрашивали
YadroYadro

Ответ от нейросети

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 помогает синхронизировать параллельные задачи и дождаться их окончания.