编程语言内存模型回答了并行程序可以依靠什么行为以便它们的线程之间可以共享内存的问题。

首先需要理解原子变量(atomic variable)或原子操作(tomic operation),编程语言模型作为程序员和编译器之间的约定规定了它们之间所需要的额外细节。

硬件、Litmus Tests、Happens Before 和 DRF-SC

程序使用DRF-SC 系统同步指令在多个处理器运行的代码之间创建一种“happens before”的关系。

Thread 1Thread 2 执行 S(a) 同步指令。在这个特定执行中,两条 S(a) 指令建立了从 Thread 1Thread 2happens-before 关系,因此 Thread 1 中的 = W(x)= 发生在 Thread 2 中的 R(x) 之前。