atomic_fetch_sub_explicit
*ret = atomic_fetch_sub_explicit(&refcnt->val, 1, memory_order_acq_rel) - 1;
*ret = atomic_fetch_sub_explicit(&refcnt->val, 1, memory_order_release) - 1;
atomic_fetch_sub_explicit(object, operand, memory_order_seq_cst)
atomic_fetch_sub_explicit(&ap, 2, memory_order_relaxed);