Зачем нужен предел порядка памяти на счетчике ссылок?

В примереboost::atomic,unref функция:

void intrusive_ptr_release(const X * x)
{
  if (x->refcount_.fetch_sub(1, boost::memory_order_release) == 1) {
    boost::atomic_thread_fence(boost::memory_order_acquire);
    delete x;
  }
}

1: операция fetch_sub ограниченаmemory_order_release, что предотвращает переупорядочение предыдущих операций после точки. Но каковы возможные сцены, которые будут иметь такое явление?

2: в дополнение кmemory_order_release на атомной опера, почему есть дополнительныйmemory_order_acquire до удаления?

Ответы на вопрос(1)

Ваш ответ на вопрос