-----------------------------------------------------------------------------------
线程主循环
-----------------------------------------------------------------------------------
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]
写到这里发现他的代码还是不够封装,居然在逻辑层还要处理这些网络的事情。应该把网络库封装的更加完整一些,让逻辑更简单清楚。
阅读(586) | 评论(0) | 转发(0) |