Читает ли exchange или compare_and_exchange последнее значение в порядке изменения?

я читаю C ++ Параллелизм в действии Энтони Уильямс.
В разделе «Понимание непринужденного заказа»:

Есть несколько дополнительных вещей, которые вы можете сказать человеку в кабинке, например: «запишите это число и скажите, что был в нижней части списка(Обмен) и «записать
это число, если число внизу списка в том, что; иначе скажи мне, что я
должен был угадать »(compare_exchange_strong), но это не влияет на общее
принцип.

Означает ли это, что такие операции всегда читают последнее значение в порядке модификации (если нет дополнительных межпотоков, происходит до ограничений)? То есть Есть ли какие-нибудь обновления кешей и т. д. (даже в спокойном порядке)?

3

Решение

Да. Стандарт C ++ говорит (29.3 / 10):

Атомарные операции чтения-изменения-записи всегда должны читать последнее значение
(в порядке изменения) записывается перед записью, связанной с
операция чтения-изменения-записи.

И то и другое exchange и успешно compare_exchange_{weak,strong} операции являются операциями чтения-изменения-записи.

6

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]