Может ли оборудование изменить порядок атомной нагрузки, за которой следует атомный магазин, если хранилище условно подхC++

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

Сообщение Anonymous »

Может ли оборудование переупорядочить атомную нагрузку с последующей атомной хранилищем, если хранилище является условным на нагрузке? It would be highly unintuitive if this could happen, because if thread1 speculatively due to branch prediction, or for whatever reason, writes y = 1 before the condition in the if statement is confirmed as true, then if it later finds out the condition resolves to false, there is no way to undo the damage (roll back the changes), because another thread may have already read the updated value of y!
Я не думаю, что выпуск и приобретение семантики поможет в этом случае. Std :: memory_order_release on y.store () будет использоваться для выполнения более ранних записей, видимых в другие потоки, которые видели значение y , но в этом случае ничто не может сделать, чтобы повлиять на видимость x в других потоках, потому что x не было написано по потоке1. Примеры, которые я видел в документации C ++ для получения семантики приобретения и выпуска только о паре потоков, где один из них является чисто автором, а другой-чисто читатель.std::atomic x;
std::atomic y;

void thread1() {
int val = x.load(std::memory_order_relaxed);
if( val == 42 ){
y.store(1, std::memory_order_relaxed);
}
}


Подробнее здесь: https://stackoverflow.com/questions/797 ... f-the-stor
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

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

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