On 14 August 2015 at 01:37, Andrey Semashev wrote: > 1. Is my test valid or is there a flaw that I'm missing?
The cppmem tool at http://svr-pes20-cppmem.cl.cam.ac.uk/cppmem/ shows that there are consistent executions where (x==0 && y==0) is true. I used this code: int main() { atomic_int a = 0; atomic_int b = 0; int x, y; {{{ { a.store(1,mo_seq_cst); a.load(mo_relaxed); x = b.load(mo_relaxed); } ||| { b.store(1, mo_seq_cst); b.load(mo_relaxed); y = a.load(mo_relaxed); } }}} return 0; }