Проблема с порядком памяти атомарных переменных C++ не может воспроизвести пример переупорядочения LoadStoreC++

Программы на C++. Форум разработчиков
Anonymous
Проблема с порядком памяти атомарных переменных C++ не может воспроизвести пример переупорядочения LoadStore

Сообщение Anonymous »

все. Я написал демо-версию, чтобы воспроизвести проблемы, упомянутые в cppreference.
cppreference demo
Я обнаружил, что в некоторых документах и ​​блогах говорится, что это может воспроизводиться не на чипах x86, а на чипах ARM, потому что Арка ARM — слабый порядок памяти. Поэтому я специально провел эксперимент на чипе Apple M1 (ARM). Однако он также не может воспроизвести r1 == r2 == 42.
Если есть какие-либо проблемы с моей демо-версией или если у вас есть другие демо-версии, которые могут воспроизвести проблему с порядком памяти.< /p>

Код: Выделить всё

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#define CHECK(condition)                                                       \
if (!(condition)) {                                                          \
std::cerr 

Подробнее здесь: [url]https://stackoverflow.com/questions/79143605/c-atomic-variable-memory-order-problem-can-not-reproduce-loadstore-reordering[/url]

Вернуться в «C++»