From 8b4ddf10e71e1c8fabd33c72b282f7da65ff682f Mon Sep 17 00:00:00 2001
From: wangzhengquan <wangzhengquan85@126.com>
Date: 星期二, 14 七月 2020 15:59:44 +0800
Subject: [PATCH] commit

---
 queue/include/shm_queue.h |   29 +++++++++++++++++++++++++++++
 1 files changed, 29 insertions(+), 0 deletions(-)

diff --git a/queue/include/shm_queue.h b/queue/include/shm_queue.h
index 93bd7dc..3a506c9 100644
--- a/queue/include/shm_queue.h
+++ b/queue/include/shm_queue.h
@@ -39,6 +39,10 @@
 
     inline ELEM_T& operator[](unsigned i);
 
+    static void remove_queues_exclue(int *keys, size_t length);
+private:
+
+
 protected:
     /// @brief the actual queue-> methods are forwarded into the real 
     ///        implementation
@@ -51,6 +55,31 @@
 
 
 template < typename ELEM_T >
+void SHMQueue<ELEM_T>::remove_queues_exclue(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>* mqueue;
+    bool found;
+    for (keyItr = keyset->begin(); keyItr != keyset->end(); keyItr++) {
+        found = false;
+        for(int i = 0; i < length; i++) {
+            if(*keyItr == keys[i]) {
+                found = true;
+                break;
+            }
+        }
+        if(!found) {
+           mqueue = (LockFreeQueue<ELEM_T> *)hashtable_get(hashtable, *keyItr);
+           delete mqueue;
+        }
+    }
+    delete keyset;
+    
+}  
+
+template < typename ELEM_T >
 SHMQueue<ELEM_T>::SHMQueue(int key, size_t qsize): KEY(key)
 {
 

--
Gitblit v1.8.0