[concurrency-interest] Semantics of compareAndSwapX
aph at redhat.com
Thu Feb 20 04:48:35 EST 2014
On 02/19/2014 08:40 PM, Stephan Diestelhorst wrote:
> On 18 February 2014 12:56, Andrew Haley <aph at redhat.com> wrote:
>> On 02/14/2014 01:51 PM, Stephan Diestelhorst wrote:
>>> I am currently following up inside ARM about this, stay tuned.
>> Any news?
> Yes, so my original understanding was too simplistic. In the
> sequence of memop_A; ldx.acq(B) ;... ; stx.rel(B); memopp_C we may
> indeed observe a lack of ordering between memop_A and memop_C. So
> the instruction sequence is not meant to be a full-fence
> replacement. This is, however, consistent with our manuals, and the
> implementation of the C++11 atomics, and the notion of sequential
> consistency of atomics.
So, GCC's usage of ldaxr ... stlxr for CAS is OK, even though it
doesn't completely enforce a full fence. This is interesting. I
wonder how anyone (not on the language committee :-) is expected to
know this. Maybe they're not, and there is going to be some
interesting confusion when people try to port software from Intel to
> So it really boils down to the semantics of Unsafe.CAS and that was
> what you were asking earlier.
OK, thanks. Thought so.
So, Back to you, Doug: what are the semantics of Unsafe.CAS ?
More information about the Concurrency-interest