首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

采取用同步编程的方式实现跨进程异步获取数据[一]

2013-09-24 
采用用同步编程的方式实现跨进程异步获取数据[一]转载请注明:http://blog.csdn.net/herm_lib/article/deta

采用用同步编程的方式实现跨进程异步获取数据[一]

转载请注明:http://blog.csdn.net/herm_lib/article/details/11686483

异步获取数据,我这边采用了一点点小技巧,这样异步获取数据的操作,变成和同步操作一样自然。

这个我个人得静下心来,好好地梳理一下,过个半个月遇到类似的需求,我自己都忘记是怎么处理了。处理方式比较有意思。

遇到一些常见的异步操作的业务逻辑:

[1] 角色登录请求,发现内存中没有该角色数据,从远程的缓存或者DB读取该角色数据。

[2] 获取某个角色信息,发现这个角色信息目前不在线,这时候,也从远程的缓存或者db读取该角色数据。

[3] 判断这个家伙是否是另外一个玩家的好友,sns类游戏中,这类逻辑超多。


我们先把直接做法,简单列出来,用来和另外一种比较优雅的方式做比较。

术语定义:

Juge_Friend_Req  

         判断是否是好友的请求,发向好友服务器。

Juge_Friend_Res

         从好友服务器回来。

Add_Energy_Req

        从Client发过来的加能量的请求。


以[3]为例子,当然,好友服务器和主逻辑服务器是位于两个进程中,如果一个进程中,那没什么好说的。比如,给好友加能量,借好友宠物上场战斗。

void JudgeFriendRes(ssMsg, param){    param = ssMsg.isFriend;}

设置这个参数后,DispatchCS用透传的数据,让流程继续回到AddEnergyReq。当第2次走到AddEnergyReq时,param != nullptr,直接判定是否是好友,接下来做该做的事情。






热点排行