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 architectureLoads may be reordered with older
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
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 thinki have to
insert a load between
line  and line .
What do you think ?
Amine Moulay Ramdane.