![]() |
Boost : |
From: Tim Blechmann (tim_at_[hidden])
Date: 2008-04-29 18:31:30
>> Compression is a good way to solve many ABA
>> problems on architectures where CAS2 is not available. A compressing
>> allocator/pointer pair would be required for any hope of portability.
>> Of course, noncompressing version should be available for platofrm
>> that could support it (such as Intel)
>
> Yes, I actually combine the pointer and an ABA counter into one 64-bit
> value for legacy AMD systems that don't support CAS2. I have only
> tested this on Windows - I have no idea how other OSes lay out their
> memory. This also introduces the idea of "preparing" a pointer for CAS,
> though the algorithm code can still be generic enough for all archs.
>
> http://svn.int64.org/svnroot/int64/snips/lockfree/tagged_ptr.x64.hpp
i have just implemented a compressed pointer for the x86_64 architecture,
tested on one linux machine ...
http://tim.klingt.org/git?p=boost_lockfree.git;a=blob;f=boost/lockfree/
tagged_ptr_ptrcompression.hpp
cheers, tim
-- tim_at_[hidden] http://tim.klingt.org Silence is only frightening to people who are compulsively verbalizing. William S. Burroughs
Boost list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk