Esempio n. 1
0
        /// <summary>
        /// Returns a new reusable value container containing <paramref name="value"/>.
        /// It will try to take from the pool, otherwise it will create a new object.
        /// Call <see cref="Dispose"/> when you are finished with this to add it back to the pool.
        /// </summary>
        public static ReusableValueContainer <T> New(T value)
        {
            ReusableValueContainer <T> node = _pool.IsNotEmpty ? _pool.Pop() : new ReusableValueContainer <T>();

            node.Value = value;
            return(node);
        }
Esempio n. 2
0
 /// <summary>
 /// Only use this if you know the queue is not empty.
 /// </summary>
 public void PushRisky(T item)
 {
     _queue.PushRisky(ReusableValueContainer <T> .New(item));
 }
Esempio n. 3
0
 /// <summary>
 /// Only use this if you know the queue is not empty.
 /// </summary>
 public void EnqueueRisky(T item)
 {
     _queue.EnqueueRisky(ReusableValueContainer <T> .New(item));
 }
Esempio n. 4
0
 public static void ClearPooledNodes()
 {
     ReusableValueContainer <T> .ClearPool();
 }
Esempio n. 5
0
 public void Push(T item)
 {
     _stack.Push(ReusableValueContainer <T> .New(item));
 }