C++原子增量内存排序
C++ atomic increment memory ordering
在C++11中:如果我递增一个原子变量(std::atomic 上的运算符 ++),新值是否与内存屏障一起存储?还是我必须明确地做一个商店?
你不需要
做一个显式存储。将使用顺序一致性内存排序。
atomic<
integral
>
类型的operator++(int)
和operator++()
被指定为具有fetch_add(1)
的效果,最终使用默认的内存排序memory_order_seq_cst
调用成员函数。
有关规范,请查看原子类型操作的要求 [atomics.types.operations.req] 29.6.5/33
相关文章:
- C++内存模型中的确切规则阻止在获取操作之前重新排序
- 危险指针的内存排序
- 内存排序在提升::无锁:队列
- 内存排序或读取-修改-写入操作,仅(读/写)内存顺序
- 针对某些特定用例的C++原子内存排序
- 无锁环形缓冲区boost示例中的内存排序
- C++具有内存排序的原子增量
- 从矢量中最快的擦除元素或更好地利用内存(排序基数)
- C++原子增量内存排序
- C++中的无锁数据结构=只使用原子和内存排序
- C++内存排序一致性
- 将C++内存排序映射到Java
- std::atomic::load的内存排序行为
- x86 体系结构上的内存排序限制
- 具有两个原子的自旋锁的最小限制内存排序
- 使用获取-释放内存排序的传递同步
- 内存排序、指令重新排序和缺乏发生前关系
- C++11 原子内存排序 - 这是宽松(释放-消耗)排序的正确用法吗?
- 使用atomic_flag旋转锁进行内存排序
- C++11内存排序-差异