wangzhengquan
2021-03-13 a38304f7f6b91aaa1b0aa76cc9d3e5b6aef1f85f
src/queue/shm_queue.h
@@ -45,8 +45,6 @@
  ELEM_T &operator[](unsigned i);
 // @deprecate
  static size_t remove_queues_exclude(int keys[], size_t length);
private:
protected:
@@ -60,34 +58,7 @@
  SHMQueue<ELEM_T>(const SHMQueue<ELEM_T> &a_src);
};
// @deprecate
template <typename ELEM_T>
size_t SHMQueue<ELEM_T>::remove_queues_exclude(int keys[], size_t length) {
  hashtable_t *hashtable = mm_get_hashtable();
  std::set<int> *keyset = hashtable_keyset(hashtable);
  std::set<int>::iterator keyItr;
  LockFreeQueue<ELEM_T, SHM_Allocator> *mqueue;
  bool found;
  size_t count = 0;
  for (keyItr = keyset->begin(); keyItr != keyset->end(); keyItr++) {
    found = false;
    for (size_t i = 0; i < length; i++) {
      if (*keyItr == keys[i]) {
        found = true;
        break;
      }
    }
    if (!found) {
      // 销毁共享内存的queue
      mqueue = (LockFreeQueue<ELEM_T, SHM_Allocator> *)hashtable_get(hashtable, *keyItr);
      delete mqueue;
      hashtable_remove(hashtable, *keyItr);
      count++;
    }
  }
  delete keyset;
  return count;
}
@@ -108,10 +79,7 @@
template <typename ELEM_T> SHMQueue<ELEM_T>::~SHMQueue() {
  LoggerFactory::getLogger()->debug("SHMQueue destroy");
  if(owner) {
    delete queue;
    hashtable_remove(hashtable, mkey);
  }
  
}