Memory ordering
- Sequentially consistent ordering :
memory_order_seq_cst - Acquire-release ordering :
- memory_order_acquire
- memory_order_release
- memory_order_consume
- memory_order_acq_rel
- Relaxed ordering :
- memory_order_relaxed
memory_order_relaxed 没有fencing作用
memory_order_consume 后面依赖此原子变量的访存指令勿重排至此条指令之前
memory_order_acquire 后面访存指令勿重排至此条指令之前
memory_order_release 前面访存指令勿重排至此条指令之后。当此条指令的结果对其他线程可见后,之前的所有指令都可见
memory_order_acq_rel acquire + release语意
memory_order_seq_cst acq_rel语意外加所有使用seq_cst的指令有严格地全序关系
fence
- atomic_thread_fence