std::memory_order六种内存序详解
请列举C++中六种std::memory_order枚举值,并解释各自的内存排序保证。
回答
孤独的心
六种内存序从弱到强:
memory_order_relaxed:仅保证原子性,无线程间同步memory_order_consume:依赖于携带依赖的数据(实践中不推荐,多数编译器降级为acquire)memory_order_acquire:保证本线程后续读操作不会被重排到之前memory_order_release:保证本线程之前的写操作不会被重排到之后memory_order_acq_rel:acquire+release组合(用于read-modify-write)memory_order_seq_cst:全局一致性,所有线程看到相同操作顺序(默认)
release-acquire配对形成线程间同步关系。