Skip to main content
15 events
when toggle format what by license comment
Oct 3, 2015 at 10:29 vote accept Joh
Oct 2, 2015 at 17:53 comment added Joh Ok, thanks. Yeah I know that there is the overflowing issue. I will try to fix that, although for my application it is very unlikely to happen. Many thanks for taking so much time.
Oct 1, 2015 at 14:13 comment added cr_oag @Joh I have added an example of failure. The section is called: "How could it fail if iHead is always incremented?" and is found between the original ABA issue and the ABA issue extended.
Oct 1, 2015 at 14:12 history edited cr_oag CC BY-SA 3.0
Example of possible failure added
Oct 1, 2015 at 11:28 comment added Joh Thanks for taking so much time! I've read a bit about ABA now. I still don't understand how this applies to my code though. All my threads are allowed to do is increment the indices, no thread can ever decrement one. So once B changes index (increases it), how would it ever decrease it again, if it's not allowed to do such an operation. So there is no A>B>A, but only A>B>C, or am I still missing something?
Sep 30, 2015 at 22:05 history edited cr_oag CC BY-SA 3.0
added 1409 characters in body
Sep 30, 2015 at 22:04 comment added cr_oag @Joh I have added further explanation of the ABA problem. I hope with my notes it will be clear. I recommend you read it and if it still isn't clear, to do further research on your own (that's how I compiled those notes in the first place).
Sep 30, 2015 at 20:54 comment added Joh @ABA: I'm not sure if I understand the problem correctly, but since my indices iHead,iTail,iWrite never get decremented anywhere, I dont think this is a problem here, is it?
Sep 30, 2015 at 20:52 comment added Joh @compare/exchange: thanks for pointing that out, will fix it and edit my post.
Sep 30, 2015 at 20:52 comment added Joh @redundancy: iWrite is needed so that while thread A is still copying data into the queue, thread B can already write at the new iWrite index. Since iTail is only adjusted after makePushedDataAvailable(), consuming threads will not see those values either, right?
Sep 30, 2015 at 20:52 comment added Joh Thank you for the large response, really helpful. First of all, how would I fix the size() and wasEmpty() problem?
Sep 30, 2015 at 15:09 history edited cr_oag CC BY-SA 3.0
added 12 characters in body
Sep 30, 2015 at 15:03 history edited cr_oag CC BY-SA 3.0
added 296 characters in body
Sep 30, 2015 at 14:51 history edited cr_oag CC BY-SA 3.0
added 296 characters in body
Sep 30, 2015 at 14:41 history answered cr_oag CC BY-SA 3.0