I think i have discovered a problem with lockfree_mpmc:
You will find the source code of lockfree_mpmc at:
So please follow with me:
If you take a look at the lockfree_mpmc , here is the source code
of the push() method:
function TLockfree_MPMC.push(tm : tNodeQueue):boolean;
if getlength >= fsize
As you know in the x86 architecture Loads may be reordered with older stores
to different locations.
So in line  there is a load of tail and lasttail to the registers of the
before calling setobject() and just before on line  there is a store to
So as you have noticed the processor can then reorder the loads on line 
with the older
store on line  and this will cause a problem, so i think i have to insert
a load between
line  and line .
What do you think ?
Amine Moulay Ramdane.
||7/22/2012 10:22:30 PM