
Peter, --- Peter Dimov <pdimov@mmltd.net> wrote:
Ben Hutchings wrote:
Peter Dimov <pdimov@mmltd.net> wrote:
Alexander Terekhov wrote:
C'mon, volatile is brain-dead.
Nobody's arguing otherwise. ;-) But a nop it isn't.
I think Alexander is arguing that without a clear definition of what it means for a memory access to be "observable",
A memory access is observable if and only if the variable is volatile. 1.9/6.
the fact that volatile memory accesses are "observable behaviour" doesn't prevent them from being optimised away under the as-if rule.
A compiler is not allowed to alter the observable behavior under the "as if" rule. 1.9/1.
I recently read the article "Double-Checked Locking, Threads, Compiler Optimizations, and More" of Scott Meyers where he touched the Sequence Points and Observable Behavior, Compiler Optimizations and Instruction Reodering. He is more convincing than Alexander; "road to the thread-safe code isn't paved with volatile". (the presentation is available from http://www.nwcpp.org/Downloads/2004/DCLP_notes.pdf) Regards Valery Salamakha _______________________________ Do you Yahoo!? Declare Yourself - Register online to vote today! http://vote.yahoo.com