Why is memory reclamation so important for lock-free algorithms?
The last time I had to write a lock-free algorithm (in this case, a multi-writer, multi-reader queue), the memory reclamation strategy was straightforward:<p>Make <i>2</i> lock-free queues.  Pre-allocate all the memory into message-sized chunks, and post them to the "upwards" queue.  A writer would read/consume from the upwards queue, write into the received buffer, and then post the same buffer in the <i>other</i> queue.  Everything is passed by reference, so it is zero-copy.<p>I guess I don't understand the reason for all the complexity.  Perhaps for more complicated algorithms than queues?