内存模型
内存模型定义了对于并发程序执行的任何给定写操作集允许读操作返回的可能值,从而定义了共享变量的基本语义。
换句话说,内存模型指定了程序读写操作的一组允许输出,并限制了一个实现只产生(但至少一个)这样的允许执行。
更具体一点的说:
内存模型可以由两部分构成:编程语言内存模型和硬件内存模型。
编程语言内存模型: 定义在将程序转换为二进制代码时允许编译器执行的优化、内存访问重写和重新排序。
硬件内存模型: 定义允许特定硬件架构执行的优化和内存访问重新排序。
为什么要有内存模型
多线程环境下,如果保持顺序一致性会降低CPU性能,代价很大,不利于程序优化。
如果想要进行程序的优化,需要编译器和CPU之间遵守相同的约定,这个约定便是内存模型
C++11的内存模型种类
C++11提供了6种内存序
enum memory_order {
memory_order_rel
这篇博客介绍了C++11的内存模型,特别是顺序一致性模型(memory_order_seq_cst)。它阐述了内存模型在多线程编程中的重要性,解释了为何需要内存模型以及C++11提供的不同内存序类型。通过代码测试展示了memory_order_seq_cst保证的全局一致性,同时指出其性能开销和没有CPU直接支持的事实。
订阅专栏 解锁全文

1万+

被折叠的 条评论
为什么被折叠?



