I try to understand how ::operator delete sync with other atomic operation. Is any atomic::write --SC-order--> ::operator delete in the same thread?
atomic<void*> A;
T1: old = A.read(relaxed); A.write(new_value,relaxed); delete(old);
T2: v1=A.read(relaxed);
Is the order possible:
T1: delete(old);
T2: v1=A.read(relaxed)
T1: A.write(new_value, relaxed);
Can T1:write(new_value, relaxed) be after T1:delete(old) for T2 in theory?
T2: v1=read(A, relaxed);can certainly happen beforeA.write(new,relaxed); delete(old);, leaving T2 with a dangling pointer. No complicated reordering necessary, may happen even with full sequential consistency.deletehappens after thewritejust because it's sequenced after it. Other threads may or may not observe those in different order.