digitalmars.D.learn - Non-blocking array queue.
- Shammah Chancellor (9/9) Mar 08 2014 Hi,
- Martin (4/13) Mar 08 2014 I think you could use http://dlang.org/phobos/core_atomic.html,
- Shammah Chancellor (4/19) Mar 08 2014 I didn't see a way to get an an increment operation. atomicOp doesn't
- Martin (4/26) Mar 08 2014 atomicOp!("+=")(value, 1);
- Shammah Chancellor (3/30) Mar 08 2014 I was considering using that, but in the channel I was told that would
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.
Mar 08 2014
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?
Mar 08 2014
On 2014-03-08 19:58:01 +0000, Martin said:On Saturday, 8 March 2014 at 19:02:26 UTC, Shammah Chancellor wrote:I didn't see a way to get an an increment operation. atomicOp doesn't seem to offer unitary operations. -S.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?
Mar 08 2014
On Saturday, 8 March 2014 at 21:12:42 UTC, Shammah Chancellor wrote:On 2014-03-08 19:58:01 +0000, Martin said:atomicOp!("+=")(value, 1); Should work, I believe. Or is that not what you meant?On Saturday, 8 March 2014 at 19:02:26 UTC, Shammah Chancellor wrote:I didn't see a way to get an an increment operation. atomicOp doesn't seem to offer unitary operations. -S.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?
Mar 08 2014
On 2014-03-08 21:16:36 +0000, Martin said:On Saturday, 8 March 2014 at 21:12:42 UTC, Shammah Chancellor wrote:I was considering using that, but in the channel I was told that would be inefficient assembly when it should normally be one operation?On 2014-03-08 19:58:01 +0000, Martin said:atomicOp!("+=")(value, 1); Should work, I believe. Or is that not what you meant?On Saturday, 8 March 2014 at 19:02:26 UTC, Shammah Chancellor wrote:I didn't see a way to get an an increment operation. atomicOp doesn't seem to offer unitary operations. -S.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?
Mar 08 2014