Может ли возникнуть блокировка (deadlock) в реализации с горутиной и каналом для predictableFunc с таймаутом?

Да: если после тайм-аута никто не читает результат, горутина может навсегда заблокироваться на отправке. Это часто утечка горутины, а не остановка всей программы.

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

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

Да: если после тайм-аута никто не читает результат, горутина может навсегда заблокироваться на отправке. Это часто утечка горутины, а не остановка всей программы.

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

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

Да: если после тайм-аута никто не читает результат, горутина может навсегда заблокироваться на отправке. Это часто утечка горутины, а не остановка всей программы.

Для одного результата буфер канала размером 1 позволяет завершить отправку, даже если вызывающий уже ушёл. Но он не останавливает саму predictableFunc, если она зависла.

Лучше передавать контекст внутрь операции и делать отправку с альтернативой ctx.Done. Без исходного кода нельзя доказать конкретный deadlock; нужно проверить всех отправителей, получателей и пути возврата.

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

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

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

Подробнее