On Tue, 07 May 2013 18:49:19 -0400, Andrei Alexandrescu
<[email protected]> wrote:
On 5/7/13 6:12 PM, Steven Schveighoffer wrote:
So that must not be what it is doing. What it must be doing is storing
out of order, BUT placing a prevention mechanism from reading the memory
until the "release" is done? Kind of like a minuscule mutex lock. So
while it is out-of-order writing the object data, it holds a lock on the
reference pointer to that data, so anyone using acquire cannot read it
yet?
That actually makes sense to me. Is that the case?
Not at all. A memory barrier dictates operation ordering. It doesn't do
interlocking. One of Herb's slides shows very nicely how memory
operations can't be moved ahead of an acquire and past a release.
I will have to watch those some time, when I have 3 hours to kill :)
Thanks for sticking with me and not dismissing out of hand. This is
actually the first time I felt close to grasping this concept.
-Steve