On Sunday, 28 August 2016 at 20:38:30 UTC, Lodovico Giaretta
wrote:
On Sunday, 28 August 2016 at 19:53:51 UTC, Illuminati wrote:
What are the D equivalents to these types of functions?
I do not see anything in core.atomic that can accomplish this.
I have tried to include core.sys.windows.winbase but still get
linker errors(I've also directly tried importing kernel32
using various methods and still nothing). Regardless, would be
nicer to have a more portable solution.
I'm not an expert in this field (so probably I'm missing
something), but I would think that InterlockedIncrement could
be done with atomicOp!"+"(val, 1) and
InterlockedCompareExchange with cas.
The interlocked functions generate memory barriers, does atomicOp
do that?
Also D doesn't seem to have a volitile keyword anymore which is
required to prevent the compiler from prematurely optimizing
critical code.