并发:C 11 内存模型中的原子性和易失性
问题:
在具有共享全局变量的多线程环境,一个线程是否可以从原子中读取过时的值 多变的?原子类型和易失性类型在确保数据完整性方面有何不同?
答案:
Volatile 与 Atomic
Volatile 确实不保证原子访问。其主要用途是内存映射 I/O 和信号处理。将 volatile 与 std::atomic 结合使用是多余的。
原子变量的内存排序
原子变量的可见性取决于所使用的内存排序参数。
确保数据完整性
为了确保数据完整性,应使用读-修改-写(RMW)操作,例如交换()和fetch_add()。这些操作始终对“最新”值进行操作,从而消除了过时值的风险。
其他注意事项
以上是C 11 中的原子变量可以防止多线程环境中的过时读取吗?的详细内容。更多信息请关注PHP中文网其他相关文章!