C++11定义了6种memory_order:
memory_order_relaxed:最弱保证,仅保证原子性,适用于计数器等不关心顺序的场景。memory_order_consume:保证依赖关系的顺序(C++17已弃用)。memory_order_acquire:防止后续操作被重排到原子读之前,通常用于锁的获取操作。memory_order_release:防止之前的操作被重排到原子写之后,通常用于锁的释放操作。memory_order_acq_rel:同时具备acquire和release语义,适用于read-modify-write操作。memory_order_seq_cst:最严格的全序一致性保证,是默认选项,最安全但性能最低。
正确选择内存序对无锁数据结构的性能和正确性至关重要。




