47

新しい C++ 標準では、メモリ モデルの概念が導入されています。スタック オーバーフローについては、それが何を意味するのか、C++ でのコードの記述方法がどのように変わるのかなど、すでに質問がありました。

私は、C++ メモリ モデルが古いよく知られている Java メモリ モデル (1.5) とどのように関連しているかを知りたいと思っています。それは同じですか?似ていますか?それらに大きな違いはありますか?もしそうなら、なぜですか?

Java のメモリ モデルは昔からあり、よく知っている人も多いので、C++ のメモリ モデルを Java のメモリ モデルと比較して学習することは、私だけでなく参考になるのではないでしょうか。

4

1 に答える 1

25

JavaメモリモデルはC++11メモリモデルに重要な影響を及ぼし、そこから用語が発生する前に、そして同期する場所でした。ただし、C ++ 11メモリモデルは、Javaメモリモデルよりもはるかにきめ細かいメモリ順序の制御を提供します。

読み取りにメモリの順序付け、書き込みに順序付け、RMW操作に順序付けを使用する場合、Javavolatile変数はC++11変数と同等です。std::atomic<>std::memory_order_acquirestd::memory_order_releasestd::memory_order_acq_rel

std::memory_order_relaxedJavaには、またはに相当するものはありませんstd::memory_order_seq_cst

于 2011-09-09T20:37:32.447 に答える