|
@@ -41,12 +41,6 @@ public:
|
|
RingQueue(long size);
|
|
RingQueue(long size);
|
|
~RingQueue();
|
|
~RingQueue();
|
|
|
|
|
|
- /* 设置队列大小 */
|
|
|
|
- void setQueueSize(long size);
|
|
|
|
- long QueueSize() { return m_capacity; }
|
|
|
|
- /* 清空队列 */
|
|
|
|
- void clearQueue();
|
|
|
|
-
|
|
|
|
/* 入队,默认是阻塞入队 */
|
|
/* 入队,默认是阻塞入队 */
|
|
void push(const T& value);
|
|
void push(const T& value);
|
|
void push(T&& value);
|
|
void push(T&& value);
|
|
@@ -69,14 +63,18 @@ public:
|
|
// T&& front_pop_rvalue();
|
|
// T&& front_pop_rvalue();
|
|
bool front_pop_NoBlock(T& t);
|
|
bool front_pop_NoBlock(T& t);
|
|
|
|
|
|
|
|
+ /* 设置队列大小 */
|
|
|
|
+ void setQueueCapacity(long size);
|
|
/* 获取队列大小,队列中有效值的大小 */
|
|
/* 获取队列大小,队列中有效值的大小 */
|
|
- long getQueueSize();
|
|
|
|
|
|
+ long QueueSize();
|
|
/* 获取队列容量 */
|
|
/* 获取队列容量 */
|
|
- long getQueueCapacity();
|
|
|
|
|
|
+ long QueueCapacity();
|
|
/* 判断队列是否为空 */
|
|
/* 判断队列是否为空 */
|
|
bool isEmpty();
|
|
bool isEmpty();
|
|
/* 判断队列是否已满 */
|
|
/* 判断队列是否已满 */
|
|
bool isFull();
|
|
bool isFull();
|
|
|
|
+ /* 清空队列 */
|
|
|
|
+ void clearQueue();
|
|
/* 退出所有可能的阻塞函数 */
|
|
/* 退出所有可能的阻塞函数 */
|
|
void exit();
|
|
void exit();
|
|
|
|
|
|
@@ -121,28 +119,6 @@ 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>
|
|
template<typename T>
|
|
@@ -385,9 +361,32 @@ bool RingQueue<T>::front_pop_NoBlock(T& t)
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
+/**
|
|
|
|
+ * @brief 设置队列大小
|
|
|
|
+ * 注意:使用这个设置,如果队列中存储的是指针,指针的内存区域需要在调用这个函数之前释放,不然可能会造成
|
|
|
|
+ * 内存泄漏
|
|
|
|
+ *
|
|
|
|
+ * @tparam T
|
|
|
|
+ * @param size
|
|
|
|
+ */
|
|
|
|
+template<typename T>
|
|
|
|
+void RingQueue<T>::setQueueCapacity(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>
|
|
template<typename T>
|
|
-long RingQueue<T>::getQueueSize()
|
|
|
|
|
|
+long RingQueue<T>::QueueSize()
|
|
{
|
|
{
|
|
std::lock_guard<std::mutex> lock(m_mutex);
|
|
std::lock_guard<std::mutex> lock(m_mutex);
|
|
if(m_rear == -1)
|
|
if(m_rear == -1)
|
|
@@ -408,7 +407,7 @@ long RingQueue<T>::getQueueSize()
|
|
|
|
|
|
/* 获取队列容量 */
|
|
/* 获取队列容量 */
|
|
template<typename T>
|
|
template<typename T>
|
|
-long RingQueue<T>::getQueueCapacity()
|
|
|
|
|
|
+long RingQueue<T>::QueueCapacity()
|
|
{
|
|
{
|
|
std::lock_guard<std::mutex> lock(m_mutex);
|
|
std::lock_guard<std::mutex> lock(m_mutex);
|
|
return m_capacity;
|
|
return m_capacity;
|