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

Какие функции предоставляются структурой WaitGroup в языке Go для синхронизации горутин?

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

sobes.tech AI

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

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

  • Add(delta int) — увеличивает или уменьшает счетчик ожидаемых горутин. Обычно вызывается перед запуском горутин.

  • Done() — уменьшает счетчик на 1, вызывается в конце работы горутины.

  • Wait() — блокирует выполнение до тех пор, пока счетчик не станет равен нулю.

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

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