From 9e6ceaad059b2aec84df92c8750f6d87eab708c2 Mon Sep 17 00:00:00 2001 From: wangzhengquan <wangzhengquan85@126.com> Date: 星期四, 16 七月 2020 20:46:31 +0800 Subject: [PATCH] udpate --- queue/include/lock_free_queue.h | 18 +++++++++++++----- 1 files changed, 13 insertions(+), 5 deletions(-) diff --git a/queue/include/lock_free_queue.h b/queue/include/lock_free_queue.h index 566c7ed..f9a4667 100644 --- a/queue/include/lock_free_queue.h +++ b/queue/include/lock_free_queue.h @@ -78,6 +78,7 @@ int items; public: + int mutex; LockFreeQueue(size_t qsize = LOCK_FREE_Q_DEFAULT_SIZE); /// @brief destructor of the class. @@ -150,6 +151,7 @@ // std::cout << "LockFreeQueue init reference=" << reference << std::endl; slots = SemUtil::get(IPC_PRIVATE, qsize); items = SemUtil::get(IPC_PRIVATE, 0); + mutex = SemUtil::get(IPC_PRIVATE, 1); } template < @@ -198,7 +200,8 @@ bool LockFreeQueue<ELEM_T, Allocator, Q_TYPE>::push(const ELEM_T &a_data) { if (SemUtil::dec(slots) == -1) { - err_exit(errno, "push"); + err_msg(errno, "LockFreeQueue push"); + return false; } if ( m_qImpl.push(a_data) ) { @@ -218,8 +221,11 @@ if (SemUtil::dec_nowait(slots) == -1) { if (errno == EAGAIN) return false; - else - err_exit(errno, "push_nowait"); + else { + err_msg(errno, "LockFreeQueue push_nowait"); + return false; + } + } if ( m_qImpl.push(a_data)) { @@ -240,8 +246,10 @@ if (SemUtil::dec_timeout(slots, timeout) == -1) { if (errno == EAGAIN) return false; - else - err_exit(errno, "push_timeout"); + else { + err_msg(errno, "LockFreeQueue push_timeout"); + return false; + } } if (m_qImpl.push(a_data)){ -- Gitblit v1.8.0