项目分析(多进程数据走向初步)

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是控制内存池的使用的)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值