From 8fc23a3bb9f49e88478a2505fa7dee434ec50c16 Mon Sep 17 00:00:00 2001
From: zhangmeng <775834166@qq.com>
Date: 星期四, 18 一月 2024 14:31:38 +0800
Subject: [PATCH] less memory
---
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