Sobes.tech
Back to questions
Senior
4

Расскажи подробнее про WaitGroup: для чего используется, какие методы есть?

Companies where asked
sber tech

Answer from AI

sobes.tech AI

WaitGroup в Go используется для ожидания завершения группы горутин. Это удобный способ синхронизировать параллельные задачи.

Основные методы:

  • Add(int): увеличивает или уменьшает счётчик ожидаемых горутин.
  • Done(): уменьшает счётчик на 1, вызывается когда горутина завершилась.
  • Wait(): блокирует выполнение до тех пор, пока счётчик не станет 0.

Пример использования:

var wg sync.WaitGroup
wg.Add(2) // ожидаем 2 горутины

go func() {
    defer wg.Done()
    // работа 1
}()

go func() {
    defer wg.Done()
    // работа 2
}()

wg.Wait() // ждем завершения обеих

Это позволяет главной горутине дождаться завершения всех запущенных параллельно задач.