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/']
Yes it's possible, here's my implementation of an STL-like [Lock-Free Doubly-Linked List](https://github.com/Qarterd/Honeycomb/blob/master/src/common/Honey/Thread/LockFree/List.h) in C++.

[Sample code that spawns threads to randomly perform ops on a list](https://github.com/Qarterd/Honeycomb/blob/master/test/Test.cpp#L12)

It requires a 64-bit compare-and-swap to operate without ABA issues. This list is only possible because of a [lock-free memory manager](https://github.com/Qarterd/Honeycomb/blob/master/src/common/Honey/Thread/LockFree/HazardMem.h).

Check out the [benchmarks on page 12](http://docs.google.com/viewer?url=http%3A%2F%2Fciteseerx.ist.psu.edu%2Fviewdoc%2Fdownload%3Fdoi%3D10.1.1.140.5222%26rep%3Drep1%26type%3Dpdf). Performance of the list scales linearly with the number of threads as contention increases. The algorithm supports parallelism for disjoint accesses, so as the list size increases contention can decrease.
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>