CodeWalk

std::memory_order六种内存序详解

作者:孤独的心 · 2026-05-30 12:55

请列举C++中六种std::memory_order枚举值,并解释各自的内存排序保证。

回答

孤独的心

六种内存序从弱到强:

  1. memory_order_relaxed:仅保证原子性,无线程间同步
  2. memory_order_consume:依赖于携带依赖的数据(实践中不推荐,多数编译器降级为acquire)
  3. memory_order_acquire:保证本线程后续读操作不会被重排到之前
  4. memory_order_release:保证本线程之前的写操作不会被重排到之后
  5. memory_order_acq_rel:acquire+release组合(用于read-modify-write)
  6. memory_order_seq_cst:全局一致性,所有线程看到相同操作顺序(默认)

release-acquire配对形成线程间同步关系。