Sobes.tech
Junior — Middle

Koja je svrha strukture Wait Group u sinhronizaciji gorutina?

sobes.tech АИ

Одговор од АИ

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