В одном из документов для атомарных переменных в C++0x при описании порядка памяти упоминается:
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...
Во-первых, правда ли, что x86 следует строгому порядку памяти? Кажется очень неэффективным всегда навязывать это. Значит, у каждой записи и чтения есть забор?
Кроме того, если у меня есть выровненный int в системе x86, служат ли вообще атомарные переменные какой-либо цели?