Ответ 1
Модель памяти Java была важным фактором, влияющим на модель памяти С++ 11, и было то, где мы вытаскивали условия, прежде чем и синхронизируется. Тем не менее, модель памяти С++ 11 предлагает гораздо более мелкозернистый контроль над порядком памяти, чем модель памяти Java.
Java volatile
переменные эквивалентны переменным С++ 11 std::atomic<>
, если вы используете std::memory_order_acquire
упорядочение памяти для чтения, std::memory_order_release
упорядочивание для записи и std::memory_order_acq_rel
упорядочивание операций RMW.
В Java нет эквивалента std::memory_order_relaxed
или std::memory_order_seq_cst
.