wangzhengquan
2020-07-25 03987ef3d1ed9c2d604561a69db169cd535014b6
src/queue/include/shm_queue.h
@@ -6,7 +6,7 @@
#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
 
@@ -32,7 +32,7 @@
   
    inline bool push(const ELEM_T &a_data);
    inline bool push_nowait(const ELEM_T &a_data);
    inline bool push_timeout(const ELEM_T &a_data, struct timespec * timeout);
    inline bool push_timeout(const ELEM_T &a_data, const struct timespec * timeout);
    inline bool pop(ELEM_T &a_data);
    inline bool pop_nowait(ELEM_T &a_data);
    inline bool pop_timeout(ELEM_T &a_data, struct timespec * timeout);
@@ -97,14 +97,18 @@
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) {
        delete queue;
        hashtable_t *hashtable = mm_get_hashtable();
        hashtable_remove(hashtable, KEY);
        LoggerFactory::getLogger().debug("SHMQueue destructor delete queue");
printf("SHMQueue destructor delete queue\n");
    } else {
        SemUtil::inc(queue->mutex);
    }
}
template < typename ELEM_T >
@@ -142,7 +146,7 @@
}
template < typename ELEM_T >
inline bool SHMQueue<ELEM_T>::push_timeout(const ELEM_T &a_data, struct timespec * timeout)
inline bool SHMQueue<ELEM_T>::push_timeout(const ELEM_T &a_data, const struct timespec * timeout)
{
    return queue->push_timeout(a_data, timeout);
@@ -155,7 +159,10 @@
template < typename ELEM_T >
inline bool SHMQueue<ELEM_T>::pop(ELEM_T &a_data)
{
   return queue->pop(a_data);
// printf("SHMQueue pop before\n");
   int rv = queue->pop(a_data);
// printf("SHMQueue after before\n");
   return rv;
    
}