+ friend void intrusive_ptr_add_ref(DiskImpl* disk)
+ {
+ disk->refcount_.fetch_add(1, std::memory_order_acq_rel);
+ }
+ friend void intrusive_ptr_release(DiskImpl* disk)
+ {
+ if (disk->refcount_.fetch_sub(1, std::memory_order_release) == 1) {
+ std::atomic_thread_fence(std::memory_order_acquire);
+ delete disk;
+ }
+ }