游戏服务器底层由一些库构成,在这些库之上的逻辑层是跨平台的。
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还是用连续内存。
阅读(749) | 评论(0) | 转发(0) |