Timeline for Lock-free MultiConsumer/MultiProducer queue
Current License: CC BY-SA 3.0
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 |