Sobes.tech
Back to questions
Junior — Middle
87

Какое назначение у конструкции Wait Group в синхронизации горутин?

Companies where asked
Twinby
IDT

Answer from AI

sobes.tech AI

WaitGroup в Go используется для синхронизации нескольких горутин. Она позволяет основной горутине (или любой другой) ждать завершения группы горутин.

Основное назначение WaitGroup — отслеживать количество активных горутин и блокировать выполнение до тех пор, пока все они не завершатся.

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

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() // ждем, пока счетчик не станет 0
fmt.Println("Все горутины завершены")

Таким образом, WaitGroup помогает координировать параллельное выполнение и гарантирует, что программа не продолжит работу, пока все необходимые горутины не закончатся.