🧵 Hazard pointers без воды — 16 июля 2026 г. в 10:54:00.808
🧵 Hazard pointers без воды Разбор безопасного освобождения памяти в lock-free структурах: почему нельзя просто delete узел, который кто-то ещё держит. • Гонка: X взял указатель на вершину и уснул, Y удалил узел, X читает по освобождённому адресу. UB • ABA: аллокатор переиспользует адрес, CAS видит «тот же» указатель и возвращает мёртвое значение. Развал структуры • Идея: поток публикует адрес в атомарный hp_ptr. Пока опубликован — узел не удаляют • Удаление откладывается: кандидаты копятся в retired_list, реальный delete идёт позже, в фазе scan Scan собирает все активные hp_ptr под shared_mutex, сортирует и бинарным поиском проверяет кандидатов. Нет в активных — deleter вызывается. 👉 Разбор

