Здравствуйте, alex_public, Вы писали:
_>·>Действительно... одной инструкцией меньше, одной больше... Кака разница? В главном-то ты прав!
_>Ох, ну что за детский сад. Ты реально не в курсе что такое mfence? Ну мне даже лень объяснять, так что поясню проще: https://godbolt.org/z/7zWFvr — с точки зрения вопросов атомарности это в точности тот же самых код с вполне корректным std::atomic, что и раньше, только переписанный чуть под другому. Дальше сам додумаешь? )))
А как это объяснишь?
https://godbolt.org/z/LLNDkD
_>Да, а ещё можешь там вообще убрать упоминания про std::atomic (оставить только голый int), но добавить вызов "atomic_thread_fence(std::memory_order_seq_cst);" и насладиться результатом.
Ну логично. Это собственно что .store по дефолту делает. И?
_>И да, можешь ещё попереключать другие компиляторы/архитектуры с кодом по ссылке выше — может тогда поймёшь, что сохранение порядка записи/чтения на разных процессора задаётся по разному (не только отдельной инструкций, как в x86, но и например модифицированными операциями записи типа str/stlr), но к вопросу атомарности записи это отношения не имеет.
Вот и попереключай.