Is core.internal.atomic.atomicFetchAdd implementation really lock free?
claptrap
clap at trap.com
Sat Dec 3 21:05:51 UTC 2022
On Saturday, 3 December 2022 at 20:18:07 UTC, max haughton wrote:
> On Saturday, 3 December 2022 at 13:05:44 UTC, claptrap wrote:
>> On Saturday, 3 December 2022 at 03:42:01 UTC, max haughton
>> wrote:
>>> On Wednesday, 30 November 2022 at 00:35:55 UTC, claptrap
>>
>> "Atomically adds mod to the value referenced by val and
>> returns the value val held previously. This operation is both
>> lock-free and atomic."
>>
>> https://dlang.org/library/core/atomic/atomic_fetch_add.html
>
> If it provides the same memory ordering guarantees does it
> matter (if we ignore performance for a second)? There are
> situations where you do (for reasons beyond performance)
> actually need a efficient (no overhead) atomic operation in
> lock-free coding, but these are really on the edge of what can
> be considered guaranteed by any specification.
It matters because the whole point of atomic operations is lock
free coding. There is no oh you might need atomic for lock free
coding, you literally have to have them. If they fall back on a
mutex it's not lock free anymore.
memory ordering is a somewhat orthogonal issue from atomic ops.
More information about the Digitalmars-d
mailing list