Obstruction-free synchronization: double-ended queues as an example
Introduction to Algorithms