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