On Tuesday, 13 June 2017 at 06:12:46 UTC, gzp wrote:
But what about compare_exchange (CAS) ? In C++ one have to provide Memory ordering for success and failure, but not in D.

I have some difficulty already to comprehend MemoryOrder.rel and MemoryOrder.acq
A cas with MemoryOrder.raw wouldn't be very useful.


Does it mean, it is the strongest sequaential all the time, all some explicit fence have to be provided.

It uses lock xchg https://github.com/dlang/druntime/blob/ce0f089fec56f7ff5b1df689f5c81256218e415b/src/core/atomic.d#L769

So no additional fences needed, it is already the strongest IIRC.

imho, if a CAS requires additional memory barriers, it's a bit useless..

Reply via email to