From c479ef57baaaa28964fc3ec8d80ff99dffa7d49f Mon Sep 17 00:00:00 2001 From: fujuntang <fujuntang@smartai.com> Date: 星期三, 10 十一月 2021 09:49:29 +0800 Subject: [PATCH] Fix the system hang issue when the app is killed contantly. --- src/queue/shm_queue.h | 13 +++---------- 1 files changed, 3 insertions(+), 10 deletions(-) diff --git a/src/queue/shm_queue.h b/src/queue/shm_queue.h index 7893485..f5d64db 100644 --- a/src/queue/shm_queue.h +++ b/src/queue/shm_queue.h @@ -40,8 +40,8 @@ bool full(); bool empty(); - int push(const ELEM_T &a_data, const struct timespec *timeout=NULL, int flag=0); - int pop(ELEM_T &a_data, const struct timespec *timeout=NULL, int flag=0); + int push(const ELEM_T &a_data, const struct timespec *timeout = NULL, int flag = 0); + int pop(ELEM_T &a_data, const struct timespec *timeout = NULL, int flag = 0); ELEM_T &operator[](unsigned i); @@ -79,10 +79,7 @@ template <typename ELEM_T> SHMQueue<ELEM_T>::~SHMQueue() { LoggerFactory::getLogger()->debug("SHMQueue destroy"); - if(owner) { - delete queue; - hashtable_remove(hashtable, mkey); - } + } @@ -90,19 +87,15 @@ template <typename ELEM_T> bool SHMQueue<ELEM_T>::bind(int key, bool force) { - - hashtable_lock(hashtable); void *tmp_ptr = hashtable_get(hashtable, key); if (tmp_ptr == NULL || tmp_ptr == (void *)1 || force) { queue = new LockFreeQueue<ELEM_T, SHM_Allocator>(mqsize); hashtable_put(hashtable, key, (void *)queue); mkey = key; owner = true; - hashtable_unlock(hashtable); return true; } - hashtable_unlock(hashtable); return false; } -- Gitblit v1.8.0