Почему хранилище std::atomic с последовательной согласованностью использует XCHG?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Почему хранилище std::atomic с последовательной согласованностью использует XCHG?

Сообщение Anonymous »

Почему магазин std::atomic:

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

std::atomic my_atomic;
my_atomic.store(1, std::memory_order_seq_cst);
выполняет xchg, когда запрашивается хранилище с последовательной согласованностью?



Разве технически не достаточно обычного хранилища с барьером чтения/записи памяти? Эквивалент:

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

_ReadWriteBarrier(); // Or `asm volatile("" ::: "memory");` for gcc/clang
my_atomic.store(1, std::memory_order_acquire);
Я говорю конкретно о x86 и x86_64. Если в магазине есть неявное ограждение приобретения.

Подробнее здесь: https://stackoverflow.com/questions/491 ... y-use-xchg
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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