У кучи появилось извлечение вершиши по условию
31.01.2026У кучи появился метод, который извлекает вершину, только если она удовлетворяет условию. Пока помечен как нестабильный.
Какая была запись
Посмотреть на вершину, решить, подходит ли она, и при необходимости извлечь — три вызова. Проблема в том, что между ними вершина может измениться: в многопоточном коде между чтением и извлечением другой поток вставит элемент.
Обходной путь — извлечь и положить обратно, если не подошла. Это работает, но неверно при панике между шагами: элемент извлечён и не возвращён.
Что даёт метод
Проверка и извлечение одной операцией, без промежуточного состояния. Элемент не извлекается, если условие не выполнено, — то есть проверка действительно ничего не меняет.
Где это нужно
Обработка очереди с приоритетом, где элементы определённого типа должны обслуживаться первыми. Снятие задач по расписанию: брать только те, что созрели.
Оригинал
Implementation of rust-lang/rust#151828
Упоминаний: 1 · Просмотров: 2