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

rust / УРОВЕНЬ 4

Счётчик, переполнившийся в ноль

ОЦЕНКА35 МИН
01

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

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

  • Реализовать цикл compare-exchange
  • Выбирать Relaxed только для метрики без синхронизационного смысла

Atomic не делает составное выражение атомарным

Отдельные load и store теряют конкурентные обновления. Read-modify-write или compare-exchange связывает переход с фактически наблюдавшимся значением.

Ordering следует из контракта данных

Relaxed достаточно независимому статистическому счётчику, который не публикует другую память. Для видимости связанных записей нужна acquire/release-связь.

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

Когда `Ordering::Relaxed` достаточно для атомарного счётчика запросов?

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

02 / РЕАЛИЗАЦИЯ

Реализуйте контракт

Реализуйте lock-free saturating add: возвращайте новое значение, не допускайте wraparound и не теряйте конкурентные increments. Счётчик не синхронизирует другие данные.

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