Java 内存模型和 C++11 内存模型之间有什么相似之处?

新的C++标准引入了内存模型的概念。Stack Overflow上已经有人问过它,它意味着什么,它如何改变我们在C++中编写代码的方式等等。

我很想知道C++内存模型与旧的,众所周知的Java内存模型(1.5)有何关系。是一样的吗?它相似吗?它们有什么显著的区别吗?如果是,为什么?

Java内存模型已经存在了很长时间,很多人都非常了解它,所以我想通过将其与Java模型进行比较来学习C++内存模型可能不仅对我有帮助。


答案 1

Java 内存模型对 C++11 内存模型产生了重要影响,也是我们从中提取术语发生之前与之同步的地方。但是,C++11 内存模型提供了比 Java 内存模型更精细的内存排序控制。

Java 变量等效于 C++11 变量,如果对读取使用内存排序、对写入进行排序以及对 RMW 操作进行排序。volatilestd::atomic<>std::memory_order_acquirestd::memory_order_releasestd::memory_order_acq_rel

在 Java 中没有与 或 等效项。std::memory_order_relaxedstd::memory_order_seq_cst


答案 2

推荐