Почему хранилище 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

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