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/']
A simple google search will reveal many lock-free doubly linked list papers.

However, they are based on atomic CAS (compare and swap).

I don't know how atomic the operations in C# are, but according to this website

<http://www.albahari.com/threading/part4.aspx>

C# operations are only guaranteed to be atomic for reading and writing a 32bit field. No mention of CAS.
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)