sync.WaitGroup — это примитив синхронизации в Go, который используется, чтобы дождаться завершения выполнения набора горутин перед тем, как продолжить.
sync.WaitGroup поддерживает внутренний счётчик, который отслеживает количество горутин:
Add(n) — увеличивает счётчик на n горутинDone() — уменьшает счётчик, когда горутина завершаетсяWait() — блокирует выполнение, пока счётчик не достигнет нуляЭто нужно, когда тебе необходимо убедиться, что все горутины завершатся перед тем, как программа продолжит работу или выйдет.
var wg sync.WaitGroup
// Добавляем 2 горутины в группу
wg.Add(2)
go func() {
defer wg.Done()
// выполняем работу
}()
go func() {
defer wg.Done()
// выполняем работу
}()
// Блокируем выполнение, пока обе горутины не завершатся
wg.Wait()
Метод Add() в sync.WaitGroup должен быть вызван перед созданием горутин, чтобы обеспечить точное отслеживание счётчика.
Новый — ещё не проверен сообществом
Вы