On Thursday, 10 November 2022 at 18:30:16 UTC, Paul Backus wrote:
On Thursday, 10 November 2022 at 17:04:31 UTC, mw wrote:
Hi,

Anyone can help explain what is the difference between x.atomicOp!"+="(1) and atomicFetchAdd(x, 1)?

Looking at the source in druntime, `atomicOp!"+="` forwards to `atomicFetchAdd` internally, so they should have the same behavior.

Thanks! Indeed:

https://github.com/dlang/dmd/blob/master/druntime/src/core/atomic.d#L582

(source is always your best friend :-)

and looks like atomicFetchAdd is more fundamental:

```
        return cast(T)(atomicFetchAdd(val, mod) + mod);
```

Reply via email to