view Main/jungle-main/transaction/AtomicReference.cs @ 41:bd44baa491a9 default tip

add TestJungleCore.cs
author Kazuma Takeda
date Thu, 23 Feb 2017 17:19:55 +0900
parents 1f99e150f336
children
line wrap: on
line source

using System.Threading;

public class AtomicReference <T> where T : class {
	private T value;

	public AtomicReference(T value) {
		this.value = value;
	}

	public bool CompareAndSet(T newValue, T prevValue) {
		T oldValue = value;
		if (oldValue == prevValue) {
			Interlocked.CompareExchange (ref value, newValue, prevValue);
			return true;
		} else {
			return false;
		}
	}
		

	public T Get() {
		return value;
	}
}