Что на самом деле обещает wait-free-очередь на Rust
Обстоятельный разбор на dev.to ведёт от вопроса «что вообще значит wait-free» до рабочей очереди на Rust. Атомарные операции убирают мьютекс, но не обещают, что поток закончит операцию за конечное число шагов, если соседний поток застрял у планировщика. Wait-free означает именно верхнюю границу шагов.
Что разбирают по дороге:
• чем wait-free отличается от lock-free и obstruction-free;
• почему очередь даётся сложнее, чем кажется;
• как кольцевой буфер фиксированного размера и номера последовательности решают, чья сейчас ячейка;
• где реализация остаётся тонкой даже после того, как код заработал.
Rust отсекает часть ошибок работы с памятью, но гарантию прогресса даёт алгоритм, а не компилятор.
Сохраните, если строите событийный пайплайн, где продюсеры быстрее консьюмеров: выбор между Mutex и атомиками перестаёт быть вопросом вкуса.
Post #2993
358
