using System.Threading; public class AtomicReference where T : class { private T value; public AtomicReference(T value) { this.value = value; } public bool CompareAndSet(T newValue, T prevValue) { // change to compere exchange. T oldValue = value; return (oldValue != Interlocked.CompareExchange (ref value, newValue, prevValue)); } public T Get() { return value; } }