- должны ее завершить. и только потом можно завершать работу сервиса.
И в случае отмены по контексту - больше не брать задач и завершиться.
Допустимо ли использовать wg.Wait по окончании работы воркеров, чтобы именно дождаться еще и завершения воркеров и завершения выполнения последних полученных задач?
я про нечто вроде
case <-ctx.Done():
wg.Done()
return
Перед таской wg.Add(1) В самой горутине defer wg.Done() В конце кода просто wg.Wait() Такое рассматривали?
Да конечно. Все ок в вашец реализации.
Только wg.Done обычно вызывают в defer, а по cancel их контекста return. Но сути не меняет.
И еще скорее правильнее по кенселу закрывать канал из которого ваши воркеры берут задачи. Тогда они завершат текущуе и не возьмут следующую
Очень опасный кстати совет. Да, так делают, но надо ппц как за этим аккуратно следить
Эм, в каждом снрвисе так делаем. Как еще его нормально завершить по вашему ? :-)
хм. А если мне надо именно только при отмене указать о завершении?
да, кажется, я понял. Спасибо большое!
Обсуждают сегодня