From: Tim Blechmann (tim_at_[hidden])
Date: 2008-04-28 17:29:46


> I'd be interested in contributing. This seems well designed already,
> but I see some improvements:

great!
 
> I want intrusive versions of stack/queue. The freelist could also be
> made to use the stack.

i once tried to adapt the queue algorithm to an intrusive version, it is
not really straight forward, though ...
when you dequeue a node from the queue, it may still be referred to by
other threads, thus you are not able (in this version not allowed!) to
free the node ...

> The allocator should put blocks on cache-line boundaries.

yes, that probably makes sense ...

> The algo works inefficiently on IA64 because it copies the pointer when
> IA64 only needs to copy the ABA counter (it has cmp8xchg16b). This can
> be reworked to have a tagged_ptr<>::cmp_type instead of comparing with
> another tagged_ptr.

oh, nice ...
 
> CAS on x86 will give you the old value if it fails. CAS should be
> changed to modify the compare arg, so you can write a loop without
> constantly loading the destination:
>
> cmp_type cmp = dest;
> do {
> ...
> } while(!CAS(dest, exch, cmp));

good point ...

btw, i have set up a git repository,
git://tim.klingt.org/boost_lockfree.git

cheers, tim

-- 
tim_at_[hidden]
http://tim.klingt.org
The aim of education is the knowledge, not of facts, but of values
  William S. Burroughs