wangzhengquan
2020-07-14 8b4ddf10e71e1c8fabd33c72b282f7da65ff682f
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)
{