From 5add39f46c8323875fb56bc764a8ff627ad82f18 Mon Sep 17 00:00:00 2001 From: Fu Juntang <StrongTiger_001@163.com> Date: 星期五, 08 十月 2021 11:12:06 +0800 Subject: [PATCH] Adjust the free action independent of the return value from the function return. --- src/shm/hashtable.cpp | 34 ++++++++++++++++++++-------------- 1 files changed, 20 insertions(+), 14 deletions(-) diff --git a/src/shm/hashtable.cpp b/src/shm/hashtable.cpp index e435172..8593cca 100755 --- a/src/shm/hashtable.cpp +++ b/src/shm/hashtable.cpp @@ -138,13 +138,32 @@ } void *hashtable_get(hashtable_t *hashtable, int key) { + int rv; + + if((rv = svsem_wait(hashtable->mutex)) != 0) { + LoggerFactory::getLogger()->error(errno, "hashtable_get\n"); + } void * res = _hashtable_get(hashtable, key); + + if((rv = svsem_post(hashtable->mutex)) != 0) { + LoggerFactory::getLogger()->error(errno, "hashtable_get\n"); + } return res; } void hashtable_put(hashtable_t *hashtable, int key, void *value) { + int rv; + + if((rv = svsem_wait(hashtable->mutex)) != 0) { + LoggerFactory::getLogger()->error(errno, "hashtable_put\n"); + } _hashtable_put(hashtable, key, value); hashtable->queueCount++; + + if((rv = svsem_post(hashtable->mutex)) != 0) { + LoggerFactory::getLogger()->error(errno, "hashtable_put\n"); + } + } bool hashtable_check_put(hashtable_t *hashtable, int key, void *value, bool overwrite) { @@ -159,7 +178,6 @@ goto suc; } val = _hashtable_get(hashtable, key); - // val = 1鏄痑llockey鐨勬儏鍐� if(val != NULL && val != (void *)1) goto fail; @@ -249,17 +267,6 @@ return keyset; } - - -int hashtable_lock(hashtable_t *hashtable) { - return svsem_wait(hashtable->mutex); -} - -int hashtable_unlock(hashtable_t *hashtable) { - return svsem_post(hashtable->mutex); -} - - void hashtable_removeall(hashtable_t *hashtable) { tailq_entry_t *item; @@ -294,7 +301,6 @@ { return key % MAPSIZE; - /*printf("hashfun = %ld\n", code);*/ } /** @@ -317,4 +323,4 @@ } printf("\n"); } -} \ No newline at end of file +} -- Gitblit v1.8.0