Is core.internal.atomic.atomicFetchAdd implementation really lock free?

rikki cattermole rikki at cattermole.co.nz
Wed Nov 30 00:54:22 UTC 2022


On 30/11/2022 1:35 PM, claptrap wrote:
> On Wednesday, 30 November 2022 at 00:16:00 UTC, rikki cattermole wrote:
>> On 30/11/2022 1:12 PM, H. S. Teoh wrote:
>>> Hmm, that's weird that the docs would say that.  I've always been under
>>> the impression that core.atomic ops use locks to achieve atomicity.
>>
>> No its correct.
>>
>> As long as the hardware supports atomic operations, it'll use those 
>> instructions. It does have a fallback to use a mutex if need be 
>> though, which might be where you got that idea from.
> 
> It really shouldn't do that IMO. People expect atomic ops to be 
> lock-free, it should be compile error if it cant be so.

It does.

Its really only GDC that supports it with its wide range of esoteric 
targets.

But generally speaking if druntime works on a CPU it probably has atomics.


More information about the Digitalmars-d mailing list