From 2a4e4619f34a742e36693e589e0431347a72979b Mon Sep 17 00:00:00 2001
From: wangzhengquan <wangzhengquan85@126.com>
Date: 星期二, 13 十月 2020 17:36:32 +0800
Subject: [PATCH] update

---
 src/socket/shm_socket.c |    9 +++++++--
 1 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/src/socket/shm_socket.c b/src/socket/shm_socket.c
index ea2f674..362e5e8 100644
--- a/src/socket/shm_socket.c
+++ b/src/socket/shm_socket.c
@@ -3,7 +3,7 @@
 #include "logger_factory.h"
 #include <map>
 
-static Logger logger = LoggerFactory::getLogger();
+static Logger *logger = LoggerFactory::getLogger();
 
 
 
@@ -43,7 +43,7 @@
   socket->force_bind = false;
   socket->dispatch_thread = 0;
   socket->status = SHM_CONN_CLOSED;
-
+  socket->mutex = SemUtil::get(IPC_PRIVATE, 1);
   return socket;
 }
 
@@ -258,6 +258,7 @@
   }
   hashtable_t *hashtable = mm_get_hashtable();
 
+  SemUtil::dec(socket->mutex);
   if (socket->queue == NULL) {
     if (socket->port == -1) {
       socket->port = hashtable_alloc_key(hashtable);
@@ -268,6 +269,8 @@
 
     socket->queue = new SHMQueue<shm_msg_t>(socket->port, 16);
   }
+  SemUtil::inc(socket->mutex);
+  
   if (port == socket->port) {
     err_msg(0, "can not send to your self!");
     return -1;
@@ -316,6 +319,7 @@
              socket->socket_type);
   }
   hashtable_t *hashtable = mm_get_hashtable();
+  SemUtil::dec(socket->mutex);
   if (socket->queue == NULL) {
     if (socket->port == -1) {
       socket->port = hashtable_alloc_key(hashtable);
@@ -326,6 +330,7 @@
 
     socket->queue = new SHMQueue<shm_msg_t>(socket->port, 16);
   }
+  SemUtil::inc(socket->mutex);
 
   shm_msg_t src;
   // printf("shm_recvfrom pop before\n");

--
Gitblit v1.8.0