From b386f0c5d35994a54e95d5fe1c4bcbfd1cdea59c Mon Sep 17 00:00:00 2001
From: Fu Juntang <StrongTiger_001@163.com>
Date: 星期五, 03 九月 2021 17:43:11 +0800
Subject: [PATCH] Supplementary for the fix of the lock removal.

---
 src/shm/hashtable.h |   23 ++++++++++++++++-------
 1 files changed, 16 insertions(+), 7 deletions(-)

diff --git a/src/shm/hashtable.h b/src/shm/hashtable.h
index ea4dc64..7bb6eac 100755
--- a/src/shm/hashtable.h
+++ b/src/shm/hashtable.h
@@ -5,15 +5,22 @@
 #include <functional>
 #include <set>
 
-#define MAPSIZE 100
+#define MAPSIZE 4096
+
+// 鍒涘缓Queue鏁伴噺鐨勪笂闄�
+#define QUEUE_COUNT_LIMIT 300
 
 typedef struct hashtable_t
 {
  struct tailq_header_t* array[MAPSIZE];
  int mutex;
- int wlock;
- int cond;
- size_t readcnt;
+ int queueCount;
+ int currentKey; // 褰撳墠鍒嗛厤鐨刱ey
+ // int wlock;
+ // int cond;
+ // size_t readcnt;
+
+ 
 
 } hashtable_t;
 typedef void (*hashtable_foreach_cb)(int key, void *value);
@@ -21,14 +28,16 @@
 void hashtable_init(hashtable_t *hashtable);
 void hashtable_destroy(hashtable_t *hashtable);
 void *hashtable_get(hashtable_t *hashtable, int key);
-void hashtable_put(hashtable_t *hashtable, int key, void *value);
+void hashtable_put(hashtable_t *hashtable, int key, void *value) ;
+bool  hashtable_check_put(hashtable_t *hashtable, int key, void *value, bool overwrite) ;
+
 void *hashtable_remove(hashtable_t *hashtable, int key);
 void hashtable_removeall(hashtable_t *hashtable);
-
+int hashtable_get_queue_count(hashtable_t *hashtable) ;
 /** 
  * 閬嶅巻hash_table
  * @demo 
- * hashtable_foreach(&hashtable, [&](int key, void * value){
+ * hashtable_foreach(hashtable, [&](int key, void * value){
  *	printf("%d, %p\n", key, value);
  * });
  * 

--
Gitblit v1.8.0