2018년 9월 4일 화요일

C# 간단한 쓰레드 안전 제네릭 큐 - C# Simple Thread-Safe Generic Queue Source Code


 protected class MyQueue<T>  
     {  
       private int MAX_COUNT = 100;  
       private Queue<T> queue = new Queue<T>();  
   
       public MyQueue(int count)  
       {  
         MAX_COUNT = count;  
       }  
   
       public bool Push(T info)  
       {  
         lock (queue)  
         {  
           if (MAX_COUNT == 0 || queue.Count < MAX_COUNT)  
           {  
             queue.Enqueue(info);  
             return true;  
           }  
           return false;  
         }  
       }  
   
       public T Pop()  
       {  
         lock (queue)  
         {  
           if (queue.Count > 0) return queue.Dequeue();  
           return default(T);  
         }  
       }  
   
       public void Clear()  
       {  
         lock (queue)  
         {  
           queue.Clear();  
         }  
       }  
   
       public int Count { get => return queue.Count; }  
     }