Почему этот забор памяти для приобретения и освобождения не дает постоянного значения?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Почему этот забор памяти для приобретения и освобождения не дает постоянного значения?

Сообщение Anonymous »

Я только изучаю использование ограничений захвата и освобождения памяти и не понимаю, почему иногда я получаю на выходе значение равное нулю, а не значение 2 все время

Я запускал программу несколько раз и предполагал, что атомарное хранилище до барьера освобождения и атомарная загрузка после барьера получения будут гарантировать, что значения всегда будут синхронизироваться

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

#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]
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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