From b5ae34d4422399c5d5458d071cca8c9bc89d20bb Mon Sep 17 00:00:00 2001 From: wangzhengquan <wangzhengquan85@126.com> Date: 星期六, 20 二月 2021 16:27:02 +0800 Subject: [PATCH] status map for close --- src/shm/shm_mm_wrapper.cpp | 50 +++++++++++++++++++++----------------------------- 1 files changed, 21 insertions(+), 29 deletions(-) diff --git a/src/shm/shm_mm_wrapper.cpp b/src/shm/shm_mm_wrapper.cpp index f726f8a..672fadb 100644 --- a/src/shm/shm_mm_wrapper.cpp +++ b/src/shm/shm_mm_wrapper.cpp @@ -1,10 +1,10 @@ #include "shm_mm_wrapper.h" -#include "mem_pool.h" +#include "shm_mm.h" #include "hashtable.h" #include "lock_free_queue.h" #include "shm_socket.h" -#define BUFFER_TIME 10 +#define BUFFER_TIME 1 void shm_mm_wrapper_init(int size) { @@ -30,21 +30,24 @@ LockFreeQueue<shm_packet_t> *mqueue; while(true) { for(auto it = shmQueueStMap->begin(); it != shmQueueStMap->end(); ++it ) { - if(it->second.status = SHM_QUEUE_ST_CLOSED && difftime(time(NULL), it->second.closeTime) > 2 ) { - mqueue = (LockFreeQueue<shm_packet_t> *)hashtable_get(hashtable, keys[i]); - if(mqueue != NULL) { - delete mqueue; - hashtable_remove(hashtable, it->first); - printf("reove queue %d\n", it->first); - // 涓嶈兘 erase ,鍚﹀垯浼氬嚭鐜板杩涚▼涔嬮棿鐨勫悓姝ラ棶棰橈紝 鑰岃繖姝f槸杩欓噷瑕佽В鍐崇殑闂 - // it = shmQueueStMap->erase(it); - // continue; - } + if(it->second.status == SHM_QUEUE_ST_CLOSED && difftime(time(NULL), it->second.closeTime) > BUFFER_TIME ) { + // mqueue = (LockFreeQueue<shm_packet_t> *)hashtable_get(hashtable, keys[i]); + // if(mqueue != NULL) { + // delete mqueue; + // } + + hashtable_remove(hashtable, it->first); + printf("reomved queue %d\n\n", it->first); + it->second.status = SHM_QUEUE_ST_RECYCLED; + // 涓嶈兘 erase ,鍚﹀垯浼氬嚭鐜板杩涚▼涔嬮棿鐨勫悓姝ラ棶棰橈紝 鑰岃繖姝f槸杩欓噷瑕佽В鍐崇殑闂 + // it = shmQueueStMap->erase(it); + // continue; } } sleep(1); } + return 0; } //鍒犻櫎鍖呭惈鍦╧eys鍐呯殑queue @@ -54,16 +57,9 @@ int count = 0; for(int i = 0; i< length; i++) { // 閿�姣佸叡浜唴瀛樼殑queue - mqueue = (LockFreeQueue<shm_packet_t> *)hashtable_get(hashtable, keys[i]); - if(mqueue == NULL) { - continue; - } - if(difftime(time(NULL), mqueue->getCreateTime()) > BUFFER_TIME ) { - delete mqueue; - hashtable_remove(hashtable, keys[i]); - LoggerFactory::getLogger()->debug("remove queue %d", keys[i]); - count++; - } + hashtable_remove(hashtable, keys[i]); + LoggerFactory::getLogger()->debug("remove queue %d", keys[i]); + count++; } return count; @@ -89,13 +85,9 @@ // 100鍐呯殑鏄痓us鍐呴儴鑷繁鐢ㄧ殑 if (!found && *keyItr > 100) { // 閿�姣佸叡浜唴瀛樼殑queue - mqueue = (LockFreeQueue<shm_packet_t> *)hashtable_get(hashtable, *keyItr); - if(difftime(time(NULL), mqueue->getCreateTime()) > BUFFER_TIME ) { - delete mqueue; - hashtable_remove(hashtable, *keyItr); - LoggerFactory::getLogger()->debug("remove queue %d", *keyItr); - count++; - } + hashtable_remove(hashtable, *keyItr); + LoggerFactory::getLogger()->debug("remove queue %d", *keyItr); + count++; } } -- Gitblit v1.8.0