From 37a7bd95042c19d7334b099d50ac6dc8e07e4b4e Mon Sep 17 00:00:00 2001 From: wangzhengquan <wangzhengquan85@126.com> Date: 星期二, 07 七月 2020 16:40:51 +0800 Subject: [PATCH] update --- squeue/include/lock_free_queue.h | 13 +++++++++---- 1 files changed, 9 insertions(+), 4 deletions(-) diff --git a/squeue/include/lock_free_queue.h b/squeue/include/lock_free_queue.h index c8a672c..8245d8e 100644 --- a/squeue/include/lock_free_queue.h +++ b/squeue/include/lock_free_queue.h @@ -22,6 +22,9 @@ template <typename ELEM_T> class ArrayLockFreeQueue; +template <typename ELEM_T> +class LinkedLockFreeQueue; + /// @brief Lock-free queue based on a circular array /// No allocation of extra memory for the nodes handling is needed, but it has @@ -67,10 +70,12 @@ template <typename T> class Q_TYPE = ArrayLockFreeQueue > class LockFreeQueue { + private: int slots; int items; -public: +public: + std::atomic_uint reference; /// @brief constructor of the class LockFreeQueue(size_t qsize = LOCK_FREE_Q_DEFAULT_SIZE); @@ -129,14 +134,13 @@ LockFreeQueue<ELEM_T, Q_TYPE>(const LockFreeQueue<ELEM_T, Q_TYPE> &a_src); }; - template < typename ELEM_T, template <typename T> class Q_TYPE> -LockFreeQueue<ELEM_T, Q_TYPE>::LockFreeQueue(size_t qsize): - m_qImpl(qsize) +LockFreeQueue<ELEM_T, Q_TYPE>::LockFreeQueue(size_t qsize): reference(0), m_qImpl(qsize) { +// std::cout << "LockFreeQueue init reference=" << reference << std::endl; slots = SemUtil::get(IPC_PRIVATE, qsize); items = SemUtil::get(IPC_PRIVATE, 0); } @@ -146,6 +150,7 @@ template <typename T> class Q_TYPE> LockFreeQueue<ELEM_T, Q_TYPE>::~LockFreeQueue() { + std::cerr << "LockFreeQueue desctroy" << std::endl; SemUtil::remove(slots); SemUtil::remove(items); } -- Gitblit v1.8.0