zoukankan      html  css  js  c++  java
  • 项目分析(多进程数据走向初步)

    shareMemInterOneway m_a2b; //(NET)A->B(GS)单向共享内存
    shareMemInterOneway m_b2a; //(GS)B->A(NET)单向共享内存
    m_a2b.init(name2, pid);
    {
        {//内存池的初始化
            m_ProcessMemPool0.init(100, 10000 * more, name + "", pid);
            {
                m_start_addr:大小:100*(10000 + 10)
            }
            m_ProcessMemPool1.init(1000, 4000 * more, name + "", pid);
            m_ProcessMemPool2.init(1024 * 30, 2000 * more, name + "", pid);
        }
        m_mem镜像:进程锁,大小:sizeof(interprocess)
        m_ShareMemQue:AB端交互的共享内存队列,大小:1024 * 1024 * 10 * more
    }
    m_b2a.init(name2, pid, 2);
    {//回发是m_a2b的两倍
        {//内存池的初始化
            m_ProcessMemPool0.init(100, 10000 * more, name + "", pid);
            m_ProcessMemPool1.init(1000, 4000 * more, name + "", pid);
            m_ProcessMemPool2.init(1024 * 30, 2000 * more, name + "", pid);
        }
        m_mem镜像:进程锁,大小:sizeof(interprocess)
        m_ShareMemQue:AB端交互的共享内存队列,大小:1024 * 1024 * 10 * more
    }
    
    
    1.数据的来源
    NetProcSvr::init()->libevent::conn_readcb(读事件)->Channel::read_datastream(读到数据流)->TCPServer::on_receive_data读包->from_net_push_pkt(放到无锁队列中去即m_all_packet)
    2.初步处理
    线程函数(fromNet2Mem)->TCPServer::recv(从无锁队列中取包)->从m_a2b进程内存池m_ProcessMemPool中取包,然后赋值->放入m_ShareMemQue队列中
    3.GS处理
    从m_a2b的共享内存中取包m_ShareMemQue->front()->m_queue->push_back(pkt);(m_queue是控制内存池的使用的)
  • 相关阅读:
    深入理解SQL的四种连接-左外连接、右外连接、内连接、全连接
    sql之group by的用法
    jmeter参数化
    jmeter--FTP测试
    jmeter基础概念
    开源性能测试工具——jemeter介绍+安装说明
    mysql安装图解 mysql图文安装教程(详细说明)
    Elasticsearch全文检索优化研究
    如何正确的关闭Elasticsearch集群
    自定义查询系统架构设计分析
  • 原文地址:https://www.cnblogs.com/zzyoucan/p/3869322.html
Copyright © 2011-2022 走看看