On Fri, Oct 26, 2007 at 08:32:07 -0700, Ian Lance Taylor wrote: > The language standard does not forbid speculative stores to non-atomic > objects.
That's why there's a proposal to refine the language. I was meaning the folloing: http://www.artima.com/cppsource/threads_meeting.html: Hans Boehm and Herb Sutter both presented very detailed and well-thought out memory models. Their differences are subtle and important, but in broad strokes, both proposals paint a similar picture. In particular, both proposals: * Specify a set of atomic (aka, interlocked) primitive operations. * Explicitly specify the ordering constraints on atomic reads and writes. * Specify the visibility of atomic writes. * Disallow speculative stores on potentially shared objects. * Disallow reading and re-writing of unrelated objects. (For instance, if you have struct S{ char a,b; }; it is not OK to modify b by reading in the whole struct, bit-twiddling b, and writing the whole struct because that would interfere with another thread that is trying to write to a.) So, will "potentially shared objects" be marked as such explicitly by the programmer, or is it a compiler job to identify them? -- Tomash Brechko