内存模型
内存模型定义了对于并发程序执行的任何给定写操作集允许读操作返回的可能值,从而定义了共享变量的基本语义。
换句话说,内存模型指定了程序读写操作的一组允许输出,并限制了一个实现只产生(但至少一个)这样的允许执行。
更具体一点的说:
内存模型可以由两部分构成:编程语言内存模型和硬件内存模型。
编程语言内存模型: 定义在将程序转换为二进制代码时允许编译器执行的优化、内存访问重写和重新排序。
硬件内存模型: 定义允许特定硬件架构执行的优化和内存访问重新排序。
为什么要有内存模型
多线程环境下,如果保持顺序一致性会降低CPU性能,代价很大,不利于程序优化。
如果想要进行程序的优化,需要编译器和CPU之间遵守相同的约定,这个约定便是内存模型
C++11的内存模型种类
C++11提供了6种内存序
enum