![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
3项目
wclin88
这个作者很懒,什么都没留下…
展开
-
底层数据库
1) 底层基本的数据库操作类 class DBOpBase { public: DBOpBase(Connection* pConnection) { ................... } ~DBOpBase() { ..........原创 2011-12-12 15:59:25 · 674 阅读 · 0 评论 -
对象池的使用
1)一个模板类的对象池, template class ObjPool { public: ObjPool(BOOL bThreadSafe=TRUE) { } ~ObjPool( VOID ) { } BOOL Init( INT nMaxCount = 10 ) {原创 2011-12-11 22:19:51 · 519 阅读 · 0 评论 -
数据库线程操作过程
数据库线程管理: 1) 根据配置文件启动相应个数的线程 2) 调用管理器 SendThreadPacket 把数据库操作包发送到没在处理包的数据库线程 3) 如果所有的线程都忙着,包放在管理器的cache里(包缓存在管理器,不是线程) 4) 在每次心跳,到cache拿包发送到空闲的DB线程 5) DB线程包处理时,从管理器拿相应线程的数据库句柄,使用上一篇的数据操作类实现数据库各种操原创 2011-12-12 20:02:13 · 526 阅读 · 0 评论 -
协议包
1)包组成: 包大小(包头加上内容) + 包ID + 校验号 + 具体内容 2)从应用程序缓存区读取的过程:根据包ID对包头的包大小字段进行校验,除了没接收完的continue之外,其他断开连接 读取包头 -》 校验包ID -》 包大小是否超过最大值(这种包所能达到的最大值) -》判断是否接收完 -》如果是定长的包,判断包的确切长度 3)校验完,把包从缓冲区里读取出来 ps:原创 2011-12-14 16:02:46 · 591 阅读 · 0 评论 -
gameserver 线程
1) 主线程 while( IsActive() ) 不停的循环着。 1 读取某些配置文件,达到"热更新"的效果 2 全局管理器的心跳,比如副本管理器等 2) 场景线程组 每一个地图场景一个线程,同一个类型的副本也是一个线程 3) 连接线程 负责接受客户端的连接,成功之后把连接给相应的场景线程 4) 数据库线程组 还有另外辅助两个线程 5) server线程 负责ga原创 2011-12-16 11:30:23 · 696 阅读 · 0 评论 -
玩家的管理
玩家的管理 1) 所有的玩家连接对象从player对象池g_pPlayerPool中分配 2) 每个连接上的玩家分配给一个player对象 class Player { public : Player( BOOL bIsServer=FALSE ) ; virtual ~Player( ) ; ................... virtual B原创 2011-12-16 15:21:53 · 647 阅读 · 0 评论 -
详解rsync算法--如何减少同步文件时的网络传输量
转至:http://blog.csdn.net/russell_tao/article/details/7240661 在csdn首页上看到这篇文章,因为现在我们的服务器日志同步也是用rsync,就转过来了,扩展一下知识面 先看下图中的场景,客户端A和B,以及服务器server都保存了同一个文件,最初,A、B和server上的文件内容都是相同的(记为File.1)。某一时刻,B修改转载 2012-03-10 21:42:27 · 715 阅读 · 0 评论