Эффекты использования memory_order_consume

Я постоянно пытался обернуть голову вокруг этой модели заказа и как она полезна. Этот ответ состояния

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

Однако это не имеет смысла для меня, так как было бы невозможно выполнить более поздние загрузки без значения, считываемого первой атомной нагрузкой. Эта почта предоставляет хороший обзор моделей согласованности и утверждает, что архитектуры ARM и Power имеют модель слабого упорядочения, за исключением того, что они обеспечивают упорядочение в зависимости от данных.

Означает ли это, что consumer_memory_order бесполезен во всех основных архитектурах, кроме Alpha?

Если нет, то, учитывая приведенный ниже пример, что и где можно переупорядочить?

ldr r1, [r0]
ldr r7, [r0]
str r2, [r0]
ldr r3, [r1]
str r7, [r3]
ldr r4, [r3]

1

Решение

Задача ещё не решена.

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

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