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

Нужны общий сигнал остановки, отменяемые блокирующие операции и ожидание завершения через WaitGroup или аналог. У каждой горутины должен быть понятный владелец.

Короткий ответ

Что ответить на собеседовании

Нужны общий сигнал остановки, отменяемые блокирующие операции и ожидание завершения через WaitGroup или аналог. У каждой горутины должен быть понятный владелец.

Подробный разбор

Ответ с пояснениями

Нужны общий сигнал остановки, отменяемые блокирующие операции и ожидание завершения через WaitGroup или аналог. У каждой горутины должен быть понятный владелец.

Сначала прекратите принимать новую работу, затем завершите или отмените текущую и дождитесь работников в пределах shutdown deadline. Отправки в каналы и внешние вызовы должны реагировать на отмену. Go не позволяет безопасно принудительно убить произвольную горутину, поэтому гарантии строятся на контракте выполняемого кода.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее