Как дождаться завершения всех горутин?

Junior
924 просмотров
AFK Offer AI

Основной способ — sync.WaitGroup. Перед запуском горутины wg.Add(1), в горутине defer wg.Done(), в main — wg.Wait(). Второй способ — каналы: горутина шлёт в канал, main читает. Третий — errgroup.Group из golang.org/x/sync: g.Go(func() error {...}), потом g.Wait() — ждёт все горутины и возвращает первую ошибку. Для серверов — context.WithCancel + signal.Notify: ловишь SIGTERM, отменяешь контекст, ждёшь завершения воркеров. Без ожидания горутин программа просто умрёт и потеряет данные.

Следующий вопрос

Что такое vendor директория?