| | |
| | | #define __SHM_QUEUE_H__ |
| | | |
| | | #include "usg_common.h" |
| | | #include "mm.h" |
| | | #include "hashtable.h" |
| | | #include "lock_free_queue.h" |
| | | #include "logger_factory.h" |
| | | #include "shm_allocator.h" |
| | | |
| | | #include "sem_util.h" |
| | | // default Queue size |
| | | // #define LOCK_FREE_Q_DEFAULT_SIZE 16 |
| | | |
| | |
| | | template < typename ELEM_T > |
| | | SHMQueue<ELEM_T>::~SHMQueue() |
| | | { |
| | | SemUtil::dec( queue->mutex); |
| | | queue->reference--; |
| | | LoggerFactory::getLogger().debug("SHMQueue destructor reference===%d", queue->reference.load()); |
| | | if(queue->reference.load() == 0) { |
| | |
| | | hashtable_t *hashtable = mm_get_hashtable(); |
| | | hashtable_remove(hashtable, KEY); |
| | | LoggerFactory::getLogger().debug("SHMQueue destructor delete queue"); |
| | | } else { |
| | | SemUtil::inc(queue->mutex); |
| | | } |
| | | |
| | | } |
| | | |
| | | template < typename ELEM_T > |