InterlockedIncrement, InterlockedCompareExchange, etc

Illuminati via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Sun Aug 28 14:52:48 PDT 2016


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.


More information about the Digitalmars-d-learn mailing list