In one of the docs for atomic variables in C++0x, when describing memory order, it mentions:
Release-Acquire Ordering
On strongly-ordered systems (x86, SPARC, IBM mainframe), release-acquire ordering is automatic. No additional CPU instructions are issued for this synchronization mode, only certain compiler optimizations are affected...
First is it true, that x86 follows strict memory ordering? Seems very inefficient to always impose this. Means every write and read has a fence?
Also, if I have an aligned int, on an x86 system, do the atomic variables serve any purpose at all?