Lines 18 and 32 of the pseudo clearly show a "while(true)" which blocks... so how can this be called "non-blocking"? Isn't looping until we get lucky pretty much like a "spin lock"? And because the number of loops is not deterministic then surely starvation can occur? For example, if all the threads try to push or pull at the same time to the head or tail of the double linked list?