Atom in C++11

Memory ordering

  1. Sequentially consistent ordering :
    memory_order_seq_cst
  2. Acquire-release ordering :
  • memory_order_acquire
  • memory_order_release
  • memory_order_consume
  • memory_order_acq_rel
  1. 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
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容