Разбор безопасного освобождения памяти в
lock-free структурах: почему нельзя просто delete узел, который кто-то ещё держит.• Гонка: X взял указатель на вершину и уснул, Y удалил узел, X читает по освобождённому адресу. UB
• ABA: аллокатор переиспользует адрес, CAS видит «тот же» указатель и возвращает мёртвое значение. Развал структуры
• Идея: поток публикует адрес в атомарный
hp_ptr. Пока опубликован — узел не удаляют• Удаление откладывается: кандидаты копятся в
retired_list, реальный delete идёт позже, в фазе scanScan собирает все активные
hp_ptr под shared_mutex, сортирует и бинарным поиском проверяет кандидатов. Нет в активных — deleter вызывается. 👉 Разбор
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#свежак
