Я запускал программу несколько раз и предполагал, что атомарное хранилище до барьера освобождения и атомарная загрузка после барьера получения будут гарантировать, что значения всегда будут синхронизироваться
Код: Выделить всё
#include
#include
#include
std::atomicx;
void write()
{
x.store(2,std::memory_order_relaxed);
std::atomic_thread_fence(std::memory_order_release);
}
void read()
{
std::atomic_thread_fence(std::memory_order_acquire);
// THIS DOES NOT GIVE THE EXPECTED VALUE OF 2 SOMETIMES
std::cout
Подробнее здесь: [url]https://stackoverflow.com/questions/56386448/why-does-this-acquire-and-release-memory-fence-not-give-a-consistent-value[/url]