Sobes.tech
Назад к вопросам
Junior — Middle
79

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

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

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

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