is increment on shared ulong atomic operation?

Charles Hixson via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Sun Feb 7 18:08:56 PST 2016


Thanks, that's what I needed to know.

I'm still going to do it as a class, but now only the inc routine needs 
to be handled specially.
(The class is so that other places where the value is used don't even 
need to know that it's special.  And so that instances are easy to share 
between threads.)

On 02/07/2016 11:43 AM, rsw0x via Digitalmars-d-learn wrote:
> On Sunday, 7 February 2016 at 19:39:27 UTC, rsw0x wrote:
>> On Sunday, 7 February 2016 at 19:27:19 UTC, Charles Hixson wrote:
>>> If I define a shared ulong variable, is increment an atomic operation?
>>> E.g.
>>>
>>> shared ulong t;
>>>
>>> ...
>>>
>>> t++;
>>>
>>> It seems as if it ought to be, but it could be split into read, 
>>> increment, store.
>>>
>>> I started off defining a shared struct, but that seems silly, as if 
>>> the operations defined within a shared struct are synced, then the 
>>> operation on a shared variable should be synced, but "+=" is clearly 
>>> stated not to be synchronized, so I'm uncertain.
>>
>> https://dlang.org/phobos/core_atomic.html#.atomicOp
>
> Just noticed that there's no example.
> It's used like
>
> shared(ulong) a;
> atomicOp!"+="(a, 1);
>



More information about the Digitalmars-d-learn mailing list