Как обработать отмену запроса в pipeline

Ожидание отправки должно выбирать между result <- value и ctx.Done(). Отмену также передавайте в сетевые операции и проверяйте между длительными этапами.

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

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

Ожидание отправки должно выбирать между result <- value и ctx.Done(). Отмену также передавайте в сетевые операции и проверяйте между длительными этапами.

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

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

Условие

Обработчик Go передаёт context в цепочку загрузки и обработки данных. Пользователь закрыл запрос, пока worker ожидает отправки результата в канал. Как не оставить зависшую goroutine?

Ответ

Ожидание отправки должно выбирать между result <- value и ctx.Done(). Отмену также передавайте в сетевые операции и проверяйте между длительными этапами.

Нельзя рассчитывать только на закрытие входного канала: worker может уже блокироваться на выходе. Владельцы каналов должны быть определены, чтобы не возникала отправка после close. Cancel сам по себе не останавливает CPU-цикл; для тяжёлой работы нужны кооперативные проверки и, при необходимости, ограничение времени.

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

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

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

Подробнее