【技术实现步骤摘要】
一种可中断的远程过程调用方法及装置
本专利技术涉及计算机
,尤其涉及一种可中断的远程过程调用方法及装置。
技术介绍
所谓远程过程调用(RPC,RemoteProcedureCall),就是一个进程调用另外一个进程所提供的方法,但是在调用端的角度仍然跟调用本进程的函数是一致的。在远程过程调用中,将要提供给被调用端进程的所有参数序列化为一个网络消息,然后通过网络传输发送到被调用端进程中。被调用端处理完成相应的服务后,将产生的结果也序列化成一个网络消息,发送到调用端进程。在RPC的实现中,如果以同步的方式去调用对方程序的RPC服务函数,那么当前线程就会被阻塞住,一直等到对方程序的响应到达或者调用超时,当前线程才能继续执行。所以当在有图形界面的主线程中以同步的方式调用RPC时,那么该程序的主线程会被阻塞,从而导致任何的界面消息,包括鼠标点击,键盘消息等都不能被响应,从而造成程序卡死的现象。
技术实现思路
本专利技术提供一种可中断的远程过程调用方法及装置,解决了现有技术中,在远程过程的同步调用过程中, ...
【技术保护点】
1.一种可中断的远程过程调用方法,其特征在于,所述方法包括:/n判断远程过程调用是否为同步调用;/n若所述远程过程调用为同步调用,判断所述远程过程调用是否被设置为可中断;/n若所述远程过程调用被设置为可中断,在将远程过程调用消息发送到被调用端后,判断等待时间是否小于预置的超时时间;/n若所述等待时间不小于所述预置的超时时间,则结束所述远程过程调用;/n若所述等待时间小于预置的超时时间,则根据中断函数的返回值判断是否结束所述远程过程调用;/n若所述中断函数的返回值为true,则结束所述远程过程调用;/n若所述中断函数的返回值不为true,则判断是否接收到被调用端的返回结果;/ ...
【技术特征摘要】
1.一种可中断的远程过程调用方法,其特征在于,所述方法包括:
判断远程过程调用是否为同步调用;
若所述远程过程调用为同步调用,判断所述远程过程调用是否被设置为可中断;
若所述远程过程调用被设置为可中断,在将远程过程调用消息发送到被调用端后,判断等待时间是否小于预置的超时时间;
若所述等待时间不小于所述预置的超时时间,则结束所述远程过程调用;
若所述等待时间小于预置的超时时间,则根据中断函数的返回值判断是否结束所述远程过程调用;
若所述中断函数的返回值为true,则结束所述远程过程调用;
若所述中断函数的返回值不为true,则判断是否接收到被调用端的返回结果;
若已接收到所述被调用端的返回结果,则结束所述远程过程调用;
若未接收到所述被调用端的返回结果,则继续执行所述判断所述等待时间是否小于所述预置时间。
2.根据权利要求1所述的方法,其特征在于,所述判断远程过程调用是否为同步调用,包括:
根据RPC_ATTR_ASYNC_CALL属性的值判断所述远程过程调用是否为同步调用,所述RPC_ATTR_ASYNC_CALL属性用于设置调用的方式;
若所述RPC_ATTR_ASYNC_CALL属性的值为0,确定所述远程过程调用为同步调用;
若所述RPC_ATTR_ASYNC_CALL属性的值为1,确定所述远程过程调用为异步调用。
3.根据权利要求1所述的方法,其特征在于,所述判断所述远程过程调用是否被设置为可中断,包括:
通过设置RPC_ATTR_CALLBACK_FUNCTION属性注册类型为RPC_POLL_TASK的所述中断回调函数,所述RPC_ATTR_CALLBACK_FUNCTION属性用于设置函数中的回调函数;
判断所述RPC_ATTR_CALLBACK_FUNCTION属性的值是否为0;
若所述RPC_ATTR_CALLBACK_FUNCTION属性的值不为0,则确定所述远程过程调用被设置为可中断;
若所述RPC_ATTR_CALLBACK_FUNCTION属性的值为0,则确定所述远程过程调用被设置为非中断。
4.根据权利要求1所述的方法,其特征在于,所述判断所述远程过程调用是否被设置为可中断之后,还包括:
将IRpcArgument类型的远程过程调用参数序列化为所述远程过程调用消息;
创建远程过程调用消息组合结构体,所述远程过程调用消息组合结构体包括rpcMessage字段、互斥锁成员、条件成员和结果成员,所述互斥锁成员用于控制函数不返回,所述条件成员用于设置函数执行的条件,所述结果成员用于设置向调用端返回的结果;
将所述远程过程调用消息保存到所述rpcMessage字段中。
5.根据要求4所述的方法,其特征在于,若所述中断函数的返回值为true,则结束所述远程过程调用包括:
若所述中断函数的返回值为true,设置所述远程过程调用消息组合结构体的结果成员为ERROR_INTERRUPTED,表示所述远程过程调用被...
【专利技术属性】
技术研发人员:杨亮,张文明,陈少杰,
申请(专利权)人:武汉斗鱼网络科技有限公司,
类型:发明
国别省市:湖北;42
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。