首页 文章

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

提问于
浏览
39

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

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

java内存模型已经存在了很长时间,并且很多人都知道它相当不错,所以我想通过将它与java的内存模型进行比较,学习C内存模型不仅对我有用 .

1 回答

  • 21

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

    Java volatile 变量等效于C 11 std::atomic<> 变量,如果使用 std::memory_order_acquire 内存排序进行读取, std::memory_order_release 顺序进行写入,并且 std::memory_order_acq_rel 顺序进行RMW操作 .

    Java中没有等效的 std::memory_order_relaxedstd::memory_order_seq_cst .

相关问题