博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
game 角色相关记录
阅读量:6345 次
发布时间:2019-06-22

本文共 1069 字,大约阅读时间需要 3 分钟。

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关闭

转载地址:http://cscla.baihongyu.com/

你可能感兴趣的文章
bootstrap随笔点击增加
查看>>
oracle 中proc和oci操作对缓存不同处理
查看>>
[LeetCode] Spiral Matrix 解题报告
查看>>
60906磁悬浮动力系统应用研究与模型搭建
查看>>
指纹获取 Fingerprint2
查看>>
面试题目3:智能指针
查看>>
取消凭证分解 (取消公司下的多个利润中心)
查看>>
flask ORM: Flask-SQLAlchemy【单表】增删改查
查看>>
vim 常用指令
查看>>
nodejs 获取自己的ip
查看>>
Nest.js 处理错误
查看>>
你好,C++(16)用表达式表达我们的设计意图——4.1 用操作符对数据进行运算...
查看>>
[转] Mac下 快速写博客的软件 MarsEdit
查看>>
Unity的赛车游戏实现思路
查看>>
[Android UI] Shape详解 (GradientDrawable)
查看>>
边学边体验django--HttpRequest 对象
查看>>
18.3 redis 的安装
查看>>
jdbc 简单连接
查看>>
Activiti 实战篇 小试牛刀
查看>>
java中的Static class
查看>>