wangzhengquan
2021-02-08 bc2afe32e8db4318f2a2adea49d85b10d0d4cc97
src/shm/shm_mm_wrapper.cpp
@@ -4,6 +4,7 @@
#include "lock_free_queue.h"
#include "shm_socket.h"
#define BUFFER_TIME 10
void shm_mm_wrapper_init(int size) {
   mem_pool_init(size);
}
@@ -16,8 +17,6 @@
   return mm_alloc_key();
}
//删除包含在keys内的queue
int shm_mm_wrapper_remove_keys(int keys[], int length) {
  hashtable_t *hashtable = mm_get_hashtable();
@@ -29,9 +28,13 @@
    if(mqueue == NULL) {
       continue;
    }
    delete mqueue;
    hashtable_remove(hashtable, keys[i]);
    count++;
    if(difftime(time(NULL), mqueue->getCreateTime()) > BUFFER_TIME ) {
      delete mqueue;
      hashtable_remove(hashtable, keys[i]);
      LoggerFactory::getLogger()->debug("remove queue %d",  keys[i]);
      count++;
    }
  }
  return count;
}
@@ -57,10 +60,13 @@
    if (!found && *keyItr > 100) {
      // 销毁共享内存的queue
      mqueue = (LockFreeQueue<shm_packet_t> *)hashtable_get(hashtable, *keyItr);
      delete mqueue;
      hashtable_remove(hashtable, *keyItr);
      count++;
      if(difftime(time(NULL), mqueue->getCreateTime()) > BUFFER_TIME ) {
        delete mqueue;
        hashtable_remove(hashtable, *keyItr);
        LoggerFactory::getLogger()->debug("remove queue %d",  *keyItr);
        count++;
      }
    }
  }
  delete keyset;