Junior — Middle
Go tilida Wait Group yordamida sinxronizatsiya qanday amalga oshirilishini tushuntirib bera olasizmi?
sobes.tech AI
AIdan javob
В 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 позволяет эффективно синхронизировать выполнение нескольких параллельных задач, не используя сложные механизмы блокировок.