fujuntang
2021-11-19 4f8e1e58427147b7a9a784639e2170d34c5d3221
Optimize the logic to avoid the possible issue.
4个文件已修改
31 ■■■■ 已修改文件
src/net/net_mod_server_socket_wrapper.cpp 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/shm/hashtable.cpp 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/shm/hashtable.h 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/socket/bus_server_socket.cpp 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/net/net_mod_server_socket_wrapper.cpp
@@ -2,11 +2,13 @@
#include "net_mod_server_socket_wrapper.h"
void *net_mod_server_socket_open(int port) {
    printf("====net_mod_server_socket_open\n");
    NetModServerSocket *sockt = new NetModServerSocket(port);
    return (void *)sockt;
}
void net_mod_server_socket_close(void *_sockt) {
    printf("====net_mod_server_socket_close\n");
    NetModServerSocket *sockt = (NetModServerSocket *)_sockt;
    delete sockt;
src/shm/hashtable.cpp
@@ -316,8 +316,15 @@
static size_t hashcode(int key)
{
  int val;
  return key % MAPSIZE;
  if (key < MAPSIZE) {
    val = key;
  } else {
    val = key % MAPSIZE + START_KEY;
  }
  return val;
}
/**
src/shm/hashtable.h
@@ -6,7 +6,7 @@
#include <set>
#define START_KEY 1000
#define MAPSIZE 81920
#define MAPSIZE 4096
// 创建Queue数量的上限
#define QUEUE_COUNT_LIMIT 300
src/socket/bus_server_socket.cpp
@@ -6,6 +6,7 @@
#include "bus_error.h"
static Logger *logger = LoggerFactory::getLogger();
static pthread_mutex_t gMutex;
list gLinkedList;
void BusServerSocket::foreach_subscripters(std::function<void(SHMKeySet *, int)>  cb) {
@@ -84,11 +85,13 @@
int  BusServerSocket::start(){
  int rv;
    topic_sub_map =    shm_mm_attach<SHMTopicSubMap>(SHM_BUS_MAP_KEY);
    rv = _run_proxy_();
  topic_sub_map =    shm_mm_attach<SHMTopicSubMap>(SHM_BUS_MAP_KEY);
    return rv;
  pthread_mutex_init(&gMutex, NULL);
  rv = _run_proxy_();
  return rv;
}
@@ -516,9 +519,11 @@
    ProcDataZone *procQuePart = shm_mm_attach<ProcDataZone>(SHM_QUEUE_ST_SET);
    ProcPartZone *procPart = shm_mm_attach<ProcPartZone>(SHM_BUS_PROC_PART_MAP_KEY);
    if (flag == PROC_REG) {
      pthread_mutex_lock(&gMutex);
      if ((proc_iter = proc->find(key)) == proc->end()) {
        proc->insert({key, Data_stru});
      }
      pthread_mutex_unlock(&gMutex);
      if ((proc_part_iter = procPart->find(key)) == procPart->end()) {
        procPart->insert({key, Data_stru.proc_id});
@@ -537,6 +542,7 @@
        SvrSub_ele->erase(key);
      }
      pthread_mutex_lock(&gMutex);
      if ((proc_iter = proc->find(key)) != proc->end()) {
        data1 = atoi((proc_iter->second).int_info);
@@ -549,6 +555,7 @@
        proc->erase(key);
      }
      pthread_mutex_unlock(&gMutex);
      if ((proc_part_iter = procPart->find(key)) != procPart->end()) {
@@ -876,9 +883,12 @@
  ProcZone::iterator proc_iter;
  ProcZone *proc = shm_mm_attach<ProcZone>(SHM_BUS_PROC_MAP_KEY);
  pthread_mutex_lock(&gMutex);
  if ((proc_iter = proc->find(val)) != proc->end()) {
    pthread_mutex_unlock(&gMutex);
    return true;
  }
  pthread_mutex_unlock(&gMutex);
  
  return false;