Sobes.tech
Назад к вопросам
Senior
2

Какой самый популярный способ контролировать завершение всех горутин?

Компании, где спрашивали
SberAuto

Ответ от нейросети

sobes.tech AI

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