Non-blocking array queue.
Shammah Chancellor
anonymous at coward.com
Sat Mar 8 13:46:05 PST 2014
On 2014-03-08 21:16:36 +0000, Martin said:
> On Saturday, 8 March 2014 at 21:12:42 UTC, Shammah Chancellor wrote:
>> On 2014-03-08 19:58:01 +0000, Martin said:
>>
>>> On Saturday, 8 March 2014 at 19:02:26 UTC, Shammah Chancellor wrote:
>>>> Hi,
>>>>
>>>> I'm interesting in implementing a non-blocking queue. My thought is
>>>> to use a fixed-size array, and increment back of the queue with a
>>>> integer. I was thinking I could make this non-blocking via an atomic
>>>> increment operation before assigning the pushed value onto the queue.
>>>> So, my question is: How would you do an atomic increment in a
>>>> cross-platform way in D?
>>>>
>>>>
>>>> Thanks!
>>>> -S.
>>>
>>> I think you could use http://dlang.org/phobos/core_atomic.html, maybe?
>>
>> I didn't see a way to get an an increment operation. atomicOp doesn't
>> seem to offer unitary operations.
>>
>> -S.
>
> atomicOp!("+=")(value, 1);
>
> Should work, I believe. Or is that not what you meant?
I was considering using that, but in the channel I was told that would
be inefficient assembly when it should normally be one operation?
More information about the Digitalmars-d-learn
mailing list