https://www.gravatar.com/avatar/932f1b40c8d0202ce03a0df412bfb0ff?s=240&d=mp

chaomai's Odyssey

Release Sequences

Release Sequences

如果

  • 有标记为memory_order_releasememory_order_acq_relmemory_order_seq_cst的store,
  • 和标记为memory_order_consumememory_order_acquirememory_order_seq_cst的load,
  • 并且在操作链中的每个操作都load上一个操作write的值

那么这个操作链构成一个release sequence,并且

Memory Ordering

Memory ordering描述了CPU访问系统内存,执行load和store的顺序。Memory ordering包括编译时编译器生成的和运行时CPU生成的。为了高效地执行指令,只要不影响单线程程序的行为,编译器和CPU常常会对指令进行memory reordering,使得访问内存的操作不会按照程序代码中指定的顺序执行。