From 082633f08aae8eea19bd7050cbe4a75e5ed1ac6f Mon Sep 17 00:00:00 2001 From: wangzhengquan <wangzhengquan85@126.com> Date: 星期二, 07 七月 2020 12:07:29 +0800 Subject: [PATCH] update --- squeue/include/queue_factory.h | 34 ++++++++++------------------------ 1 files changed, 10 insertions(+), 24 deletions(-) diff --git a/squeue/include/queue_factory.h b/squeue/include/queue_factory.h index b898a86..23446b0 100644 --- a/squeue/include/queue_factory.h +++ b/squeue/include/queue_factory.h @@ -4,10 +4,11 @@ #include "mm.h" #include "hashtable.h" #include "lock_free_queue.h" -#include "SLinkedLockFreeQueue.h" -namespace QueueFactory{ - hashtable_t * getHashTable() { +class QueueFactory{ +private: + + static hashtable_t * getHashTable() { static hashtable_t *hashtable = NULL; int first; @@ -20,24 +21,9 @@ } - template <typename T> - SLinkedLockFreeQueue<T>* createLinkedLockFreeQueue(int key, size_t size) { - + - SLinkedLockFreeQueue<T> *queue; - hashtable_t *hashtable = getHashTable(); - - - if ((queue = (SLinkedLockFreeQueue<T> *)hashtable_get(hashtable, key)) == NULL ) { - queue = new SLinkedLockFreeQueue<T>(size); - hashtable_put(hashtable, key, (void *)queue); - } - - return queue; - } - - - template <typename T> + template <typename T> static LockFreeQueue<T>* createArrayLockFreeQueue(int key, size_t size=16) { LockFreeQueue<T> *queue; @@ -51,8 +37,9 @@ return queue; } +public: - template <typename T> + template <typename T> static LockFreeQueue<T>* createQueue(int key, size_t size = 16) { return QueueFactory::createArrayLockFreeQueue<T>(key, size); } @@ -60,14 +47,13 @@ /** * destroy queue */ - template <typename T> + template <typename T> static void dropQueue(int key) { - LockFreeQueue<T> *queue = QueueFactory::createQueue<T> (key); delete queue; hashtable_t *hashtable = getHashTable(); hashtable_remove(hashtable, key); } -} +}; #endif -- Gitblit v1.8.0