Подтвердить что ты не робот

Каковы сходства между моделью памяти Java и моделью памяти С++ 11?

Новый стандарт С++ вводит понятие модели памяти. Были уже вопросы об этом, что это значит, как это изменит способ написания кода в С++ и т.д.

Мне интересно узнать, как модель памяти С++ относится к более старой, хорошо известной модели памяти Java (1.5). Это то же самое? Это похоже? Есть ли у них какие-либо существенные различия? Если да, то почему?

Модель памяти java существует уже давно, и многие люди знают ее довольно прилично, поэтому я думаю, что мне нелегко было бы изучить модель памяти С++, сравнив ее с java.

4b9b3361

Ответ 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.