From 7d3086a481899b03c230eb06a29aa57677041725 Mon Sep 17 00:00:00 2001
From: wangzhengquan <wangzhengquan85@126.com>
Date: 星期三, 08 七月 2020 15:07:51 +0800
Subject: [PATCH] update

---
 squeue/include/array_lock_free_queue.h |   16 ++++++++++++++++
 1 files changed, 16 insertions(+), 0 deletions(-)

diff --git a/squeue/include/array_lock_free_queue.h b/squeue/include/array_lock_free_queue.h
index 9a345e2..e03d6cd 100644
--- a/squeue/include/array_lock_free_queue.h
+++ b/squeue/include/array_lock_free_queue.h
@@ -39,6 +39,8 @@
     /// @brief calculate the index in the circular array that corresponds
     /// to a particular "count" value
     inline uint32_t countToIndex(uint32_t a_count);
+
+    ELEM_T& operator[](unsigned i);
     
 private:    
     size_t Q_SIZE;
@@ -304,4 +306,18 @@
     return false;    
 }
 
+
+template <typename ELEM_T>
+ELEM_T& ArrayLockFreeQueue<ELEM_T>::operator[](unsigned int i)
+{
+    int currentCount = m_count.load();
+    uint32_t currentReadIndex = m_readIndex.load();
+    if (i < 0 || i >= currentCount)
+    {
+        std::cerr << "Error in array limits: " << i << " is out of range\n";
+        std::exit(EXIT_FAILURE);
+    }
+    return m_theQueue[countToIndex(currentReadIndex+i)];
+}
+
 #endif // __LOCK_FREE_QUEUE_IMPL_MULTIPLE_PRODUCER_H__

--
Gitblit v1.8.0