Back to questions
Wildberries
СБЕР
Junior — Middle
89
Можете объяснить, как реализована синхронизация с помощью Wait Group в Go?
Companies where asked
Answer from AI
sobes.tech AI
В Go синхронизация с помощью WaitGroup реализована через структуру из пакета sync, которая позволяет ждать завершения набора горутин.
Основные методы:
Add(int)— увеличивает счетчик ожидаемых горутин.Done()— уменьшает счетчик, вызывается по завершении горутины.Wait()— блокирует выполнение до тех пор, пока счетчик не станет равен нулю.
Пример:
var wg sync.WaitGroup
wg.Add(2) // ожидаем 2 горутины
go func() {
defer wg.Done()
// работа горутины 1
}()
go func() {
defer wg.Done()
// работа горутины 2
}()
wg.Wait() // ждем завершения обеих горутин
Таким образом, WaitGroup позволяет эффективно синхронизировать выполнение нескольких параллельных задач, не используя сложные механизмы блокировок.