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