zoukankan      html  css  js  c++  java
  • game 角色相关记录

    GameServer启动

    (role, misc, mail, offline)
    从共享内存中加载数据到m_mBlob中
    如果共享内存没有则从DB加载

    主要是修改了同步共享内存,共享内存同步数据库
    {//role,misc
    getRoleByUid()
    内存
    map<uint32_t, list<>::iterator> m_map;//管理内存cache
    list<pair<uint32_t, Role*>> m_list;

    blob
    mfw::CMemKV m_mBlob;
    存储:zlib压缩sdp存储,//管理共享内存

    共享内存


    getRoleByUid:
    访问内存,如果内存没有,从blob加载出来并放到内存中

    RoleManager::loop(50ms)
    {
    1.Role::loop 2s bChanged->serialieze()->setBlobByUid() m_mBlob.set --写入到m_mBlob中,写了共享内存

    2.loop删除的时候如果 bChanged->serialieze()->setBlobByUid()
    定时删除不活跃,和根据配置的最小和最大数量删除
    }

    {
    BlobRoleManager::loop
    BlobMiscManager::loop
    将变化的blob放入入库的线程队列中
    SyncDbThread
    map<string, SyncDataTypePtr> m_mQueueItem;
    mfw::CThreadQueue<SyncDataTypePtr> m_dataQueue;
    }

    SyncDbThread
    {
    syncThreadEntry入库线程
    从队列m_dataQueue,m_mQueueItem pop出来入库
    executeSave 执行入库操作
    执行完成之后放入完成队列mfw::CThreadQueue<SyncDataTypePtr> m_finishQueue
    }

    loop从完成队列m_finishQueue取出来。。
    }

    {//mail
    BlobMailManager::loop
    m_stLruCache.loop 有变化的mail写入m_mBlob

    BlobMailManager::getInstance()->startThead//mail入库线程
    }

    {//offline
    BlobOfflineManager::getInstance()->startThead//offline入库线程
    }
    数据库

    GameServer关闭

  • 相关阅读:
    微信公众平台开发(53)砸金蛋
    微信公众平台高级功能
    微信5.0安卓内测版下载
    微信公众平台2013.08.05更新说明
    淘宝微信互相屏蔽影响了谁
    WAP网页输入框的默认键盘类型控制
    如何通过微信创业赚钱
    腾讯风铃
    腾讯推出微信企业服务平台风铃
    一键生成HTML4和WAP站
  • 原文地址:https://www.cnblogs.com/zzyoucan/p/9326944.html
Copyright © 2011-2022 走看看