FFORGE//RS
← Маршрут

rust / УРОВЕНЬ 4

Worker-очередь, которая никогда не отказывала

ОЦЕНКА50 МИН
01

ТЕОРИЯ / ВОСПРОИЗВЕДЕНИЕ

Что нужно восстановить

  • Отличать bounded admission от unbounded channel
  • Возвращать отклонённую job при full queue
  • Закрывать senders до join worker
  • Преобразовывать panic worker в типизированную ошибку

Очередь — часть capacity contract

Unbounded channel превращает overload в рост памяти и устаревшую работу. Конечная очередь задаёт максимум ожидания; `try_send` немедленно отклоняет избыток, а blocking send применяет backpressure.

Закрытие канала задаётся ownership

Receiver-iterator завершается только после drop всех sender и drain принятой очереди. Join при живом sender clone может ждать бесконечно: сначала закройте admission, затем join.

Panic потока — граница ошибки

`JoinHandle::join` возвращает panic payload. Сервис может преобразовать его в типизированную ошибку, не утверждая, что уже выполненные внешние эффекты откатились.

КОНТРОЛЬНАЯ ТОЧКА

Какие два вывода нужны для bounded overload и конечного graceful shutdown одного worker?

Выберите все подходящие варианты. Ответ засчитывается только при точном совпадении набора.

ISOLATED RUST 1.96
src/lib.rsРЕДАКТИРОВАНИЕ

02 / ОТЛАДКА

Найдите и исправьте дефект

Исправьте `BoundedWorker` без изменения API: нулевая capacity отклоняется до spawn, `try_submit` не блокирует и сохраняет job в Full/Closed, worker обрабатывает принятые jobs один раз по порядку, shutdown закрывает sender, делает drain и переводит panic в `WorkerPanicked`.

Инициализация редактора…
ОБЛАЧНЫЙ SANDBOXсеть выключена · 256 МБ · 12 с
2 / 64 KB
ВЫВОД
Runner ждёт отправки кода.