Boost logo

Boost :

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:

> 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,

cheers, tim

The aim of education is the knowledge, not of facts, but of values
  William S. Burroughs

Boost list run by bdawes at, gregod at, cpdaniel at, john at