Asking this question with C# tag, but if it is possible, it should be possible in any language. 

Is it possible to implement a doubly linked list using Interlocked operations to provide no-wait locking? I would want to insert, add and remove, and clear without waiting.
['https://Stackoverflow.com/questions/849786', 'https://Stackoverflow.com', 'https://Stackoverflow.com/users/92692/']
Here is a [paper](http://citeseer.ist.psu.edu/cache/papers/cs/32904/http:zSzzSzwww.cs.chalmers.sezSz~phszSzTechnicalReportszSzSunT04_Deque.pdf/sundell04lockfree.pdf) which discribes a lock free doublly linked list. 

> 
> We present an efficient and practical
>  lock-free implementation of a
>  concurrent deque that is
>  disjoint-parallel accessible and uses
>  atomic primitives which are available
>  in modern computer systems. Previously
>  known lock-free algorithms of deques
>  are either based on non-available
>  atomic synchronization primitives,
>  only implement a subset of the
>  functionality, or are not designed for
>  disjoint accesses. Our algorithm is
>  based on a doubly linked list, and
>  only requires single-word
>  compare-and-swap...
> 
> 
> 

Ross Bencina has some really good links I just found with numerious papers and source code excamples for "[Some notes on lock-free and wait-free algorithms](http://www.audiomulch.com/~rossb/code/lockfree/)".
Well you haven't actually asked how to do it. But, provided you can do an atomic CAS in c# it's entirely possible. 

In fact I'm just working through an implementation of a doubly linked wait free list in C++ right now.

Here is paper describing it.
<http://www.cse.chalmers.se/~tsigas/papers/Haakan-Thesis.pdf>

And a presentation that may also provide you some clues.
<http://www.ida.liu.se/~chrke/courses/MULTI/slides/Lock-Free_DoublyLinkedList.pdf>