From b90ba316b54db321d3e8aaac7df93b46d80b9d9c Mon Sep 17 00:00:00 2001 From: wangzhengquan <wangzhengquan85@126.com> Date: 星期二, 22 十二月 2020 15:47:41 +0800 Subject: [PATCH] 三个没有回收的信号 --- src/queue/mm.c | 16 +++++++++++----- 1 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/queue/mm.c b/src/queue/mm.c index 979cced..dc6f5be 100644 --- a/src/queue/mm.c +++ b/src/queue/mm.c @@ -310,7 +310,14 @@ if(shmctl(shmid, IPC_STAT, &shmid_ds) == 0) { //LoggerFactory::getLogger()->debug("shm_nattch=%d\n", shmid_ds.shm_nattch); // 鍙湁褰撳墠涓�涓繘绋媋ttach鍒板叡浜唴瀛樹笂 - if(shmid_ds.shm_nattch == 1) { + if (shmid_ds.shm_nattch > 1) { + //detache + if (shmdt(shmp) == -1) { + LoggerFactory::getLogger()->error(errno, "mm_destroy shmdt"); + } + SemUtil::inc(mutex); + return false; + } else { hashtable_destroy(hashtable); //detache @@ -326,14 +333,13 @@ else LoggerFactory::getLogger()->debug("shared memory destroy\n"); + LoggerFactory::getLogger()->debug(errno, "mm_destroy: real destroy."); + SemUtil::inc(mutex); SemUtil::remove(mutex); return true; - } else { - SemUtil::inc(mutex); - return false; - } + } } else { err_msg(errno, "mm_destroy shmctl IPC_STAT"); -- Gitblit v1.8.0