前言


为什么需要内存模型

什么是内存模块

内存模型类似于协议,规范了各个层级之间的约束

  • 编程语言:语言和程序员之间的协议
  • 编译器:编程语言和编译器之间的协议,防止编译器过度优化
  • cpu:cpu和编译器之间的约束

  • happen-before

  • synchorize-with

    编程语言


每个编程语言都有自己的memory order,这里仅记录C++ 11的memory order.

编译器


cpu