Sobes.tech
Back to questions
Junior — Middle
81

Какова роль и назначение структуры WaitGroup при разработке на Go?

Companies where asked
AvitoAvito

Answer from AI

sobes.tech AI

В Go структура WaitGroup используется для синхронизации нескольких горутин. Она позволяет основной горутине ждать завершения группы других горутин.

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

  • 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() // ждем завершения обеих горутин

Таким образом, WaitGroup помогает корректно управлять параллельным выполнением и ожиданием завершения задач.