Logo
Section 1 / 7

内存模型

了解C++标准库中的多线程及其内存模型。

导入

内存模型

了解C++标准库中的多线程及其内存模型。

C++11 中的多线程

从 C++11 开始,C++ 首次支持原生多线程。该支持包含两个部分:明确定义的内存模型和标准化的线程接口。若想深入学习多线程,请参考相关课程《现代 C++ 并发编程实践:充分发挥任意机器的性能》。

内存模型

多线程的基础是明确定义的内存模型。该内存模型需处理以下三个方面:

  • 原子操作:能够无中断执行的操作。
  • 操作的部分有序性:必须保持顺序、不可重排的操作序列。
  • 操作的可见性效果:保证共享变量上的操作何时对其他线程可见。

C++ 内存模型与其前身——Java 内存模型——有许多相似之处。但与 Java 不同的是,C++ 允许打破顺序一致性。顺序一致性是原子操作的默认行为,它提供以下两项保证:

  1. 程序中的指令按源代码顺序执行。
  2. 所有线程上的所有操作存在一个全局统一的顺序。

文件系统

原子数据类型