
Matt Hurd wrote: [...]
By the way, when you say ia32 which architectures are you referring to, as they have varied quite a bit on their capabilities from 386 to P4 & Xeon?
I'm referring to "All IA-32". See Intel Itanium Architecture Software Developer's Manual, 6.3.4 Memory Ordering Interactions (apart from hoist-and-sink "pirate talk", so to say.).
Do you have a view on the original question about how to structure code regarding architecture specific specializations?
First off, atomocity without memory ordering and visibility protocol is pretty useless. atomic<> with msync is the way to go. But of course you can use its load(msync::none_t) and even store(T, msync:: none_t) where/when it's appropriate and totally safe. I mean for example... apropos std::string ;-) http://groups.google.com/groups?selm=3E4B6227.87DCBA45%40web.de http://groups.google.com/groups?selm=3F741BDC.60E4D173%40web.de regards, alexander.