Hey @DolevAdas , I have read the dequeue method, but there is one thing that confused me a lot. See the scan loop condition below:
|
for (unsigned int scanHead = scanHeadOfQueue->head; ( scanHeadOfQueue != tempHeadOfQueue || scanHead < (tempHead-1) && n->is_set.load(std::memory_order_acquire) == 0); scanHead++) |
I think it should be:
( (scanHeadOfQueue != tempHeadOfQueue || scanHead < (tempHead-1)) && n->is_set.load(std::memory_order_acquire) == 0)
The original scan loop condition makes the loop continue to run even if n->is_set.load(std::memory_order_acquire) != 0.
Hey @DolevAdas , I have read the
dequeuemethod, but there is one thing that confused me a lot. See the scan loop condition below:Jiffy/MpScQueue.h
Line 172 in 82cb6fb
I think it should be:
( (scanHeadOfQueue != tempHeadOfQueue || scanHead < (tempHead-1)) && n->is_set.load(std::memory_order_acquire) == 0)The original scan loop condition makes the loop continue to run even if
n->is_set.load(std::memory_order_acquire) != 0.