Memory safety не исключает deadlock
Mutex защищает от гонок данных, но потоки могут навсегда ждать друг друга, захватывая одинаковые lock в разном порядке. Единый глобальный порядок устраняет цикл ожидания.
rust / УРОВЕНЬ 4
ТЕОРИЯ / ВОСПРОИЗВЕДЕНИЕ
Mutex защищает от гонок данных, но потоки могут навсегда ждать друг друга, захватывая одинаковые lock в разном порядке. Единый глобальный порядок устраняет цикл ожидания.
Самопереводы, неверные индексы и суммы следует отклонять до lock: так критическая секция короче и один нерекурсивный mutex не захватывается дважды.
КОНТРОЛЬНАЯ ТОЧКА
02 / ОТЛАДКА
Исправьте `transfer`: отклоняйте неверные операции и захватывайте два account-lock в стабильном порядке, сохраняя заданное направление debit/credit.
Runner ждёт отправки кода.