ответ должен быть перепроверен после того, как мы добавим его в список опасных точек моего владельца.Вот простой пример.если вы найдете ошибки, пожалуйста, дайте мне знать.(похоже, есть ошибки, пожалуйста, смотрите комментарии)
hazard_pointer * hp = acquire_hazard_pointer();
void* local_p;
do {
local_p = global_p;
hp->ptr = local_p;
__asm__ volatile("mfence" ::: "memory"); // prevent the `while` executed before the `hp = local_p`;
} while ( local_p != global_p );
read_local_p(local_p);
...