From 7a12bed7a2550d037e6e869c1ed0ce115098dbb2 Mon Sep 17 00:00:00 2001 From: wangzhengquan <wangzhengquan85@126.com> Date: 星期六, 13 三月 2021 18:44:51 +0800 Subject: [PATCH] update --- src/queue/lock_free_queue.h | 55 ++++++++++++++++++++++++++++++++----------------------- 1 files changed, 32 insertions(+), 23 deletions(-) diff --git a/src/queue/lock_free_queue.h b/src/queue/lock_free_queue.h index 31f2cc1..f74f4bc 100644 --- a/src/queue/lock_free_queue.h +++ b/src/queue/lock_free_queue.h @@ -88,9 +88,9 @@ sem_t slots; sem_t items; - // time_t createTime; - // time_t closeTime; - // int status; + time_t createTime; + time_t closeTime; + int status; public: @@ -101,7 +101,8 @@ /// template ~LockFreeQueue(); - // inline void close(); + inline void close(); + inline bool isClosed(); // std::atomic_uint reference; /// @brief constructor of the class @@ -129,17 +130,17 @@ - // time_t getCreateTime() { - // return createTime; - // } + time_t getCreateTime() { + return createTime; + } - // time_t getCloseTime() { - // return closeTime; - // } + time_t getCloseTime() { + return closeTime; + } - // int getStatus() { - // return status; - // } + int getStatus() { + return status; + } /// @brief push an element at the tail of the queue /// @param the element to insert in the queue @@ -182,20 +183,28 @@ if (sem_init(&items, 1, 0) == -1) err_exit(errno, "LockFreeQueue sem_init"); - // createTime = time(NULL); - // status = LOCK_FREE_Q_ST_OPENED; + createTime = time(NULL); + status = LOCK_FREE_Q_ST_OPENED; } -// template< -// typename ELEM_T, -// typename Allocator, -// template<typename T, typename AT> class Q_TYPE> -// inline void LockFreeQueue<ELEM_T, Allocator, Q_TYPE>::close() { -// // status = LOCK_FREE_Q_ST_CLOSED; -// // closeTime = time(NULL); -// } +template< + typename ELEM_T, + typename Allocator, + template<typename T, typename AT> class Q_TYPE> +inline void LockFreeQueue<ELEM_T, Allocator, Q_TYPE>::close() { + status = LOCK_FREE_Q_ST_CLOSED; + closeTime = time(NULL); +} + +template< + typename ELEM_T, + typename Allocator, + template<typename T, typename AT> class Q_TYPE> +inline bool LockFreeQueue<ELEM_T, Allocator, Q_TYPE>::isClosed() { + return status == LOCK_FREE_Q_ST_CLOSED; +} template< -- Gitblit v1.8.0