From a38304f7f6b91aaa1b0aa76cc9d3e5b6aef1f85f Mon Sep 17 00:00:00 2001 From: wangzhengquan <wangzhengquan85@126.com> Date: 星期六, 13 三月 2021 17:07:22 +0800 Subject: [PATCH] update --- src/queue/array_lock_free_queue.h | 1 src/queue/lock_free_queue.h | 46 +++++++++++----------- src/socket/shm_socket.cpp | 27 ++++++++++--- 3 files changed, 44 insertions(+), 30 deletions(-) diff --git a/src/queue/array_lock_free_queue.h b/src/queue/array_lock_free_queue.h index 5ff8daf..24efd10 100644 --- a/src/queue/array_lock_free_queue.h +++ b/src/queue/array_lock_free_queue.h @@ -102,6 +102,7 @@ template<typename ELEM_T, typename Allocator> ArrayLockFreeQueue<ELEM_T, Allocator>::~ArrayLockFreeQueue() { // std::cout << "destroy ArrayLockFreeQueue\n"; + Allocator::deallocate(m_theQueue); } diff --git a/src/queue/lock_free_queue.h b/src/queue/lock_free_queue.h index 54d0b04..31f2cc1 100644 --- a/src/queue/lock_free_queue.h +++ b/src/queue/lock_free_queue.h @@ -88,9 +88,9 @@ sem_t slots; sem_t items; - time_t createTime; - time_t closeTime; - int status; + // time_t createTime; + // time_t closeTime; + // int status; public: @@ -101,7 +101,7 @@ /// template ~LockFreeQueue(); - inline void close(); + // inline void close(); // std::atomic_uint reference; /// @brief constructor of the class @@ -129,17 +129,17 @@ - time_t getCreateTime() { - return createTime; - } + // time_t getCreateTime() { + // return createTime; + // } - time_t getCloseTime() { - return closeTime; - } + // time_t getCloseTime() { + // return closeTime; + // } - int getStatus() { - return status; - } + // int getStatus() { + // return status; + // } /// @brief push an element at the tail of the queue /// @param the element to insert in the queue @@ -182,20 +182,20 @@ if (sem_init(&items, 1, 0) == -1) err_exit(errno, "LockFreeQueue sem_init"); - createTime = time(NULL); - status = LOCK_FREE_Q_ST_OPENED; + // createTime = time(NULL); + // status = LOCK_FREE_Q_ST_OPENED; } -template< - typename ELEM_T, - typename Allocator, - template<typename T, typename AT> class Q_TYPE> -inline void LockFreeQueue<ELEM_T, Allocator, Q_TYPE>::close() { - status = LOCK_FREE_Q_ST_CLOSED; - closeTime = time(NULL); -} +// template< +// typename ELEM_T, +// typename Allocator, +// template<typename T, typename AT> class Q_TYPE> +// inline void LockFreeQueue<ELEM_T, Allocator, Q_TYPE>::close() { +// // status = LOCK_FREE_Q_ST_CLOSED; +// // closeTime = time(NULL); +// } template< diff --git a/src/socket/shm_socket.cpp b/src/socket/shm_socket.cpp index 4f5f4d9..1f5d47b 100644 --- a/src/socket/shm_socket.cpp +++ b/src/socket/shm_socket.cpp @@ -112,12 +112,9 @@ static int _shm_socket_close_(shm_socket_t *sockt) { - int rv; + int rv, i; logger->debug("shm_socket_close\n"); - // hashtable_remove(hashtable, mkey); - // if(sockt->queue != NULL) { - // sockt->queue = NULL; - // } + if(sockt->key != 0) { auto it = shmQueueStMap->find(sockt->key); @@ -127,6 +124,24 @@ } } + + printf("====sockt->queue addr = %p\n", sockt->queue); + + if(sockt->queue != NULL) { + for( i = 0; i < sockt->queue->size(); i++) { + mm_free((*(sockt->queue))[i].buf); + logger->info("======= %d free queue element buf\n", sockt->key); + } + + // hashtable_remove(hashtable, mkey); + // sockt->queue = NULL; + } + + + // hashtable_remove(hashtable, mkey); + // if(sockt->queue != NULL) { + // sockt->queue = NULL; + // } pthread_mutex_destroy(&(sockt->mutex) ); @@ -168,8 +183,6 @@ int shm_socket_get_key(shm_socket_t *sockt){ return sockt->key; } - - // 鐭繛鎺ユ柟寮忓彂閫� int shm_sendto(shm_socket_t *sockt, const void *buf, const int size, -- Gitblit v1.8.0