新的 Java 内存模型(2004)许多同样的人开始为 C++ 定义一个类似的内存模型,最终在 C++11 中采用。 两个重要方便的差异:

  1. C++ 对具有数据竞争的程序不做任何保证
  2. C++ 提供了三种原子性:强同步(顺序一致性),弱同步(内存一致性(coherence))和无同步(“relaxed”,用于隐藏竞争)。

第一点尝试消除对 Java 模型的复杂性需求,“relaxed” 的原子性重新引入 Java 关于定义什么是竞争程序的所有复杂性。结果是C++模型比Java更复杂,但对程序员的帮助更小。