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[/url]