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