|  | @@ -4,7 +4,7 @@
 | 
	
		
			
				|  |  |  #include <cstdlib>
 | 
	
		
			
				|  |  |  #include <utility>
 | 
	
		
			
				|  |  |  #include <mutex>
 | 
	
		
			
				|  |  | -#include <atomic>
 | 
	
		
			
				|  |  | +// #include <atomic>
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  /**
 | 
	
		
			
				|  |  |   * @brief 这里采用零公摊的方式,设置多大的空间,就有多大的空间可以使用
 | 
	
	
		
			
				|  | @@ -34,9 +34,12 @@ class RingQueue
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  public:
 | 
	
		
			
				|  |  | -    RingQueue(long size = 1024);
 | 
	
		
			
				|  |  | +    RingQueue();
 | 
	
		
			
				|  |  | +    RingQueue(long size);
 | 
	
		
			
				|  |  |      ~RingQueue();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    /* 设置队列大小 */
 | 
	
		
			
				|  |  | +    void setQueueSize(long size);
 | 
	
		
			
				|  |  |      /* 入队 */
 | 
	
		
			
				|  |  |      bool enQueue(const T& data);
 | 
	
		
			
				|  |  |      bool enQueue(T&& data);
 | 
	
	
		
			
				|  | @@ -67,6 +70,13 @@ private:
 | 
	
		
			
				|  |  |   * ***************************** 函数实现 *****************************
 | 
	
		
			
				|  |  |   * ===================================================================== */
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +/* 这个构造函数需要调用 setQueueSize 设置环形队列的大小 */
 | 
	
		
			
				|  |  | +template<typename T>
 | 
	
		
			
				|  |  | +RingQueue<T>::RingQueue() : m_capacity(0) , m_front(-1), m_rear(-1)
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +    
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  template<typename T>
 | 
	
		
			
				|  |  |  RingQueue<T>::RingQueue(long capacicy) : m_capacity(capacicy)
 | 
	
		
			
				|  |  |  {
 | 
	
	
		
			
				|  | @@ -85,6 +95,29 @@ RingQueue<T>::~RingQueue()
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +/**
 | 
	
		
			
				|  |  | + * @brief 设置队列大小
 | 
	
		
			
				|  |  | + *        注意:使用这个设置,如果队列中存储的是指针,指针的内存区域需要在调用这个函数之前释放,不然可能会造成
 | 
	
		
			
				|  |  | + *              内存泄漏
 | 
	
		
			
				|  |  | + * 
 | 
	
		
			
				|  |  | + * @tparam T 
 | 
	
		
			
				|  |  | + * @param size 
 | 
	
		
			
				|  |  | + */
 | 
	
		
			
				|  |  | +template<typename T>
 | 
	
		
			
				|  |  | +void RingQueue<T>::setQueueSize(long size)
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +    if(m_queue != nullptr)
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +        delete[] m_queue;
 | 
	
		
			
				|  |  | +        m_queue = nullptr;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    m_capacity = size;
 | 
	
		
			
				|  |  | +    m_front = -1;
 | 
	
		
			
				|  |  | +    m_rear = -1;
 | 
	
		
			
				|  |  | +    m_queue = new T[m_capacity];
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  /* 入队 */
 | 
	
		
			
				|  |  |  template<typename T>
 |