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

时间:2011-09-09 14:47:44

标签: java c++ c++11 memory-model java-memory-model

新的c ++标准引入了内存模型的概念。关于它的问题已经存在问题,它是什么意思,它如何改变我们用c ++编写代码的方式等等。

我有兴趣了解C ++内存模型与旧的,众所周知的Java内存模型(1.5)的关系。它是一样的吗?它是相似的吗?他们有什么重大差异吗?如果是这样,为什么?

java内存模型已经存在很长时间了很多人都知道它非常不错,所以我想通过比较它来学习C ++内存模型可能会有所帮助。

1 个答案:

答案 0 :(得分:22)

Java内存模型对C ++ 11内存模型有重要影响,我们将发生在之前和同步的术语拉出来之际。但是,与Java内存模型相比,C ++ 11内存模型提供了更精细的内存排序控制。

Java volatile变量等同于C ++ 11 std::atomic<>变量,如果使用std::memory_order_acquire内存排序进行读取,std::memory_order_release排序用于写入,{{1订购RMW操作。

Java中没有std::memory_order_acq_relstd::memory_order_relaxed