[发明专利]一种可中断的远程过程调用方法及装置有效
申请号: | 201810750589.5 | 申请日: | 2018-07-10 |
公开(公告)号: | CN110704203B | 公开(公告)日: | 2022-08-16 |
发明(设计)人: | 杨亮;张文明;陈少杰 | 申请(专利权)人: | 武汉斗鱼网络科技有限公司 |
主分类号: | G06F9/54 | 分类号: | G06F9/54 |
代理公司: | 北京众达德权知识产权代理有限公司 11570 | 代理人: | 刘杰 |
地址: | 430000 湖北省武汉市东湖开*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 中断 远程 过程 调用 方法 装置 | ||
本发明公开了一种可中断的远程过程调用方法及装置,该方法包括:若远程过程调用为同步调用且为可中断,判断等待时间是否小于预置的超时时间;若等待时间不小于预置的超时时间,则结束远程过程调用;若等待时间小于预置的超时时间,则根据中断函数的返回值判断是否结束远程过程调用;若中断函数的返回值为true,则结束远程过程调用;若中断函数的返回值不为true,则判断是否接收到被调用端的返回结果;若已接收到被调用端的返回结果,则结束远程过程调用;若未接收到所述被调用端的返回结果,则继续执行判断等待时间是否小于预置时间。可以通过设置中断函数,在接收到调用结果或调用超时之前,结束本次远程过程调用,以使得当前线程处于可运行状态。
技术领域
本发明涉及计算机技术领域,尤其涉及一种可中断的远程过程调用方法及装置。
背景技术
所谓远程过程调用(RPC,Remote Procedure Call),就是一个进程调用另外一个进程所提供的方法,但是在调用端的角度仍然跟调用本进程的函数是一致的。在远程过程调用中,将要提供给被调用端进程的所有参数序列化为一个网络消息,然后通过网络传输发送到被调用端进程中。被调用端处理完成相应的服务后,将产生的结果也序列化成一个网络消息,发送到调用端进程。
在RPC的实现中,如果以同步的方式去调用对方程序的RPC服务函数,那么当前线程就会被阻塞住,一直等到对方程序的响应到达或者调用超时,当前线程才能继续执行。所以当在有图形界面的主线程中以同步的方式调用RPC时,那么该程序的主线程会被阻塞,从而导致任何的界面消息,包括鼠标点击,键盘消息等都不能被响应,从而造成程序卡死的现象。
发明内容
本发明提供一种可中断的远程过程调用方法及装置,解决了现有技术中,在远程过程的同步调用过程中,必须等到调用结果或者调用超时,当前线程才能继续执行的问题。
第一方面,本发明实施例提供了一种可中断的远程过程调用方法,所述方法包括:
判断远程过程调用是否为同步调用;
若所述远程过程调用为同步调用,判断所述远程过程调用是否被设置为可中断;
若所述远程过程调用被设置为可中断,在将远程过程调用消息发送到被调用端后,判断等待时间是否小于预置的超时时间;
若所述等待时间不小于所述预置的超时时间,则结束所述远程过程调用;
若所述等待时间小于预置的超时时间,则根据中断函数的返回值判断是否结束所述远程过程调用;
若所述中断函数的返回值为true,则结束所述远程过程调用;
若所述中断函数的返回值不为true,则判断是否接收到被调用端的返回结果;
若已接收到所述被调用端的返回结果,则结束所述远程过程调用;
若未接收到所述被调用端的返回结果,则继续执行所述判断所述等待时间是否小于所述预置时间。
可选的,所述判断远程过程调用是否为同步调用,包括:
根据RPC_ATTR_ASYNC_CALL属性的值判断所述远程过程调用是否为同步调用,所述RPC_ATTR_ASYNC_CALL属性用于设置调用的方式;
若所述RPC_ATTR_ASYNC_CALL属性的值为0,确定所述远程过程调用为同步调用;
若所述RPC_ATTR_ASYNC_CALL属性的值为1,确定所述远程过程调用为异步调用。
可选的,所述判断所述远程过程调用是否被设置为可中断,包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于武汉斗鱼网络科技有限公司,未经武汉斗鱼网络科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810750589.5/2.html,转载请声明来源钻瓜专利网。