wangzhengquan
2020-07-07 37a7bd95042c19d7334b099d50ac6dc8e07e4b4e
squeue/include/queue_factory.h
@@ -22,10 +22,8 @@
   }
    
   template <typename T> static
   LockFreeQueue<T>* createArrayLockFreeQueue(int key, size_t size=16) {
   LockFreeQueue<T>* _createQueue(int key, size_t size = 16) {
      LockFreeQueue<T> *queue;
      hashtable_t *hashtable = getHashTable();
      //LockFreeQueue<int, 10000> q;
@@ -34,14 +32,18 @@
         hashtable_put(hashtable,  key, (void *)queue);
      }
      std::cout << "createQueue reference===" << queue->reference << std::endl;
      return queue;
   }
public:
   template <typename T> static
   LockFreeQueue<T>* createQueue(int key, size_t size = 16) {
      return QueueFactory::createArrayLockFreeQueue<T>(key, size);
      LockFreeQueue<T> *queue = _createQueue<T>(key, size);
      queue->reference++;
      return queue;
   }
   /**
@@ -49,11 +51,19 @@
   */
   template <typename T> static
   void dropQueue(int key) {
      LockFreeQueue<T> *queue = QueueFactory::createQueue<T> (key);
      LockFreeQueue<T> *queue = _createQueue<T> (key);
      if(queue == NULL)
         return;
      queue->reference--;
std::cout << "dropQueue reference===" << queue->reference << std::endl;
      if(queue->reference == 0) {
      delete queue;
      hashtable_t *hashtable = getHashTable();
      hashtable_remove(hashtable, key);
   }
   }
};
#endif