Re:Examining ARM vs. x86 Memory Models with Rust
by comex on Saturday June 27, 2020 @01:32PM
(#23663178)
In particular, the “multi-threaded using volatile” example is technically incorrect because the compiler is allowed to move non-volatile accesses across volatile ones. [1] To make it correct (but still only on x86), you’d have to use std::sync::atomic::compiler_barrier.
[1] https://gcc.gnu.org/onlinedocs/gcc/Volatiles.html