4 using System.Collections.Generic;
6 namespace SiliconStudio.
Paradox.Audio
14 internal class ThreadSafeQueue<
T>
16 private readonly List<T> cachedDequeueList =
new List<T>();
18 private readonly
object internalLock =
new object();
19 public object InternalLock
21 get {
return internalLock; }
24 private readonly Queue<T> internalQueue =
new Queue<T>();
25 public Queue<T> InternalQueue
27 get {
return internalQueue; }
36 return internalQueue.Count;
41 public void Enqueue(T item)
45 internalQueue.Enqueue(item);
49 public bool TryDequeue(out T result)
57 ret = internalQueue.Count > 0;
59 result = internalQueue.Dequeue();
65 public List<T> DequeueAsList()
69 cachedDequeueList.Clear();
71 while (internalQueue.Count > 0)
72 cachedDequeueList.Add(internalQueue.Dequeue());
74 return cachedDequeueList;