public LockFreeQueue() { var firstElement = new LockFreeQueueItem <T>(); _head = firstElement; _tail = firstElement; }
public void Enqueue(T item) { var newItem = new LockFreeQueueItem <T>(item); _tail.Next = newItem; Interlocked.Exchange(ref _tail, newItem); }
public LockFreeQueueItem(T data = null, LockFreeQueueItem <T> next = null) { Data = data; Next = next; }