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

全部博文(41)

文章存档

2016年(1)

2015年(1)

2014年(9)

2013年(30)

我的朋友

分类: C/C++

2013-05-13 09:06:29


-----------------------------------------------------------------------------------
线程主循环
-----------------------------------------------------------------------------------
        ret = Select( ) ;
        ret = ProcessExceptions( ) ;
        ret = ProcessInputs( ) ;
        ret = ProcessOutputs( ) ;
                ret = g_pLoginPlayerManager->ProcessCommands( ) ;
                ret = g_pLoginPlayerManager->ProcessCacheCommands( ) ;
                ret = g_pLoginPlayerManager->HeartBeat( ) ;




                -----------------------------------------------------------------------------------
                 ret = Select( ) ;---这里说了read set,其他write set, exception set都是一样的。
                -----------------------------------------------------------------------------------
                用的select, 重定义了fd_size=1024, 配置两台login server, 也就是说一组服务器最多支持2000个人。
                fd_set read_set[2],  有玩家登陆, fd_set(read_set[0]), 有玩家退出fd_clr(read_set[1], read_set[0]);
                select的时候用read_set[1]从read_set[0]拷贝, 然后select read_set[1]
                
                我原来做法是定义一个online_vector, 玩家登陆退出时操作该集合。select的时候根据此集合初始化read_set.他的这种做法比我原来的好。可以把我自己原来的那个select库改下。
                
                我的做法
                --loop(online_vector)
                    --fd_set(read_set)
                
                他的做法
                --read_set[1]=read_set[0]
                
                
                写到这里发现他的代码还是不够封装,居然在逻辑层还要处理这些网络的事情。应该把网络库封装的更加完整一些,让逻辑更简单清楚。


阅读(589) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~