Chinaunix首页 | 论坛 | 博客
  • 博客访问: 98984
  • 博文数量: 41
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 486
  • 用 户 组: 普通用户
  • 注册时间: 2012-05-18 20:09
文章分类

全部博文(41)

文章存档

2016年(1)

2015年(1)

2014年(9)

2013年(30)

我的朋友

分类: C/C++

2013-05-08 17:28:48

游戏服务器底层由一些库构成,在这些库之上的逻辑层是跨平台的。
libs: libbase+libnet+liblua

服务器网络模式只考虑iocp, epoll. (与其每个都做,不如做好一个~,所以不考虑select)

命名规则:
文件名用小写,看起来舒服。类名用CTest方式。

version@20130508
libs.rar



以下是一些底层库里面的具体类的设计。
/************************************************************************/
/*
日志库@20130509
*/
/************************************************************************/
参考过陈硕的日志库,同步和异步都开发了一个,基于以下原因,决定使用同步方式
1,发现测试的时候异步日志库的消息队列长度很容易被塞满,即写线程比读线程快,不好设计。
2,100w条数据同步方式大概花了87s, 足够使用。

同步的日志库: log_test.rar
异步的日志库:  async_log_test.rar


/************************************************************************/
/*
缓冲类@20130514
*/
/************************************************************************/
最开始版本是Libbase下的sockbuf, 非环形的。
这里重新写了一个纯粹的环形缓冲类: t.rar
而对于sockbuf来说,每次recv需要连续内存,所以环形缓冲不能直接拿来用。
1,先用一个栈recv,再Push到环形缓冲中。这样和用内存连续的缓冲,效率差不多。
2,同环形缓冲一样,分段recv, 复杂度提升。 用连续内存应该不会成为瓶颈。
综上,sockbuf还是用连续内存。

阅读(746) | 评论(0) | 转发(0) |
0

上一篇:跨平台select网络库

下一篇:tlbb-code anolyze

给主人留下些什么吧!~~