|
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, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk