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/)".
It is possible to write lock free algorithms for *all* copyable data structures on most architectures [1]. But it is hard to write efficient ones.

I wrote an [implementation](https://github.com/2i/lfdll) of the [lock-free doubly linked list by Håkan Sundell and Philippas Tsigas](http://www.researchgate.net/publication/237782379_Lock-Free_and_Practical_Deques_and_Doubly_Linked_Lists_using_Single-Word_Compare-And-Swap1) for .Net. Note, that it does not support atomic PopLeft due to the concept.

[1]: [Maurice Herlihy: Impossibility and universality results for wait-freesynchronization (1988)](http://repository.cmu.edu/cgi/viewcontent.cgi?article=2796&context=compsci)