On Tue, Oct 02, 2012 at 10:13:07AM -0400, Mathieu Desnoyers wrote:
> Implement wait-free concurrent queues, with a new API different from
> wfqueue.h, which is already provided by Userspace RCU. The advantage of
> splitting the head and tail objects of the queue into different
> arguments is to allow these to sit on different cache-lines, thus
> eliminating false-sharing, leading to a 2.3x speed increase.
> 
> This API also introduces a "splice" operation, which moves all nodes
> from one queue into another, and postpones the synchronization to either
> dequeue or iteration on the list. The splice operation does not need to
> touch every single node of the queue it moves them from. Moreover, the
> splice operation only needs to ensure mutual exclusion with other
> dequeuers, iterations, and splice operations from the list it splices
> from, but acts as a simple enqueuer on the list it splices into (no
> mutual exclusion needed for that list).
> 
> Feedback is welcome,

These look sane to me, though I must confess that the tail pointer
referencing the node rather than the node's next pointer did throw
me for a bit.  ;-)

                                                        Thanx, Paul


_______________________________________________
lttng-dev mailing list
lttng-dev@lists.lttng.org
http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev

Reply via email to