
- that free_list thing...looks very much like an allocator. I understand that you want to make sure that push/pop doesn't call the default allocator (-> mutex lock), but couldn't you make lock-free containers accept stateful allocators and provide a default allocator that keeps free-d objects in a free_list? am I missing a reason why you need a seperate allocation interface? I haven't found the concept the free_list_t template parameter in the documentation, can it do anythiong beyond what the interface of a std::allocator provides?
typically with lockfree it is hard to truly free anything because some thread may still be lingering on the node you are freeing. So you need a free list that maybe recycles but never actually frees. IIRC that is the case with this library, unless it has changed since I first saw it. Tony