Hi Reinier, Hmm, I'm worried about the first idea--leaving the Pipeline lock open during cycle() is troublesome because most of the work done in cycle() is managing the linked lists, which have to be done while the lock is held because these are nonatomic operations. With the lock open, we risk race conditions where two different threads try to manipulate the neighboring nodes in the list and end up destroying the entire list. One possible variation on the first idea is to let Pipeline::cycle() hold the lock most of the time, but release just before each call to cycler->cycle() (and grab it back afterwards). I think this would probably work, but now we're paying the overhead of locking and unlocking many more times per frame. That might be OK (we have to grab the individual cycler's locks each time anyway). Oops, got to go--I'll write some more on this later. On Tue, Oct 14, 2014 at 7:30 AM, Reinier de Blois