我们通过C# Queue 和Stack的实现知道Stack是依靠数组实现的,那么ConcurrentStack的栈又是如何实现的了,然后它的线程安全又是怎么做到的了? 来看看其code吧
public class ConcurrentStack<T> : IProducerConsumerCollection<T>, IReadOnlyCollection<T> { private class Node { internal readonly T m_value; // Value of the node. internal Node m_next; // Next pointer. internal Node(T value) { m_value = value; m_next = null; } } private volatile Node m_head; private const int BACKOFF_MAX_YIELDS = 8; public ConcurrentStack(){} public ConcurrentStack(IEnumerable<T> collection) { if (collection == null) { throw