[发明专利]一种运行协程的方法和装置有效
申请号: | 201710432602.8 | 申请日: | 2017-06-09 |
公开(公告)号: | CN107329812B | 公开(公告)日: | 2018-07-06 |
发明(设计)人: | 孙尚 | 申请(专利权)人: | 腾讯科技(深圳)有限公司 |
主分类号: | G06F9/48 | 分类号: | G06F9/48 |
代理公司: | 北京三高永信知识产权代理有限责任公司 11138 | 代理人: | 朱雅男 |
地址: | 518057 广东省深圳*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 协程 存储位置 函数执行 运行数据 计算机技术领域 目标存储位置 方法和装置 触发事件 存储区域 记录目标 调用 挂起 存储 激活 进程 检测 保证 | ||
本发明公开了一种运行协程,属于计算机技术领域。所述方法包括:在目标协程运行的过程中,当所述目标协程挂起时,存储所述目标协程当前的函数执行位置和运行数据,记录目标存储位置和初始存储位置的相对位置,其中,所述目标存储位置为所述函数执行位置和运行数据的存储位置,所述初始存储位置为所述目标协程所属进程的存储区域的初始位置;当检测到所述目标协程的激活触发事件时,根据所述相对位置,获取所述函数执行位置和运行数据;重新调用所述目标协程的函数,基于所述函数执行位置和运行数据,继续运行所述目标协程。采用本发明,可以保证在进程rusume后,协程正常运行。
技术领域
本发明涉及计算机技术领域,特别涉及一种运行协程的方法和装置。
背景技术
随着计算机技术的不断发展,服务端所提供的业务越来越复杂、多样化,这些业务往往涉及大量的异步处理,而一般情况下会采用协程(用来实现某些独立功能的函数)来进行这些异步处理。例如,游戏服务端提供的用户登录这一业务,涉及在线状态检测,账户安全检测,账户数据获取等多种异步处理,在实现用户登录的进程中,可以使用不同的协程分别进行上述异步处理。
业务的某一线程在进行至某一步时,如果需要获取某个参数A,则可以创建相关协程,由该协程进行上述A的获取处理。协程在获取A的过程中,发现需要获取参数B,则可以暂停处理(可称为挂起),存储协程的上下文(上下文包括协程的函数返回地址和运行数据),并记录对应的存储地址,同时向外部(可以是其它协程或线程)发送B的获取请求。进而,当接收到外部返回的B后,协程可以再次运行(可称为激活),即根据记录的存储地址,读取协程上下文,然后基于B进行后续处理。
在实现本发明的过程中,发明人发现现有技术至少存在以下问题:
现有服务端一般采用resume(重新启动)机制来提高进程容灾能力,主要是将整个业务的进程(进程中可以包括多个线程)的运行数据保存在共享存储区域中,这样,在进程意外崩溃再次重启后,存储在共享存储区域中的运行数据也不会损坏或丢失。同时,在resume机制下,在进程重新启动后,为了防止共享存储区域中的运行数据被恶意窃取,一般都会对共享存储区域内数据的存储地址进行随机偏移,这样,协程挂起时存储的上下文的实际存储地址将会发生变化,协程中记录的存储地址将会失效,协程将无法正常运行。
发明内容
为了解决现有技术的问题,本发明实施例提供了一种运行协程的方法和装置。所述技术方案如下:
第一方面,提供了一种运行协程的方法,所述方法包括:
在目标协程运行的过程中,当所述目标协程挂起时,存储所述目标协程当前的函数执行位置和运行数据,记录目标存储位置和初始存储位置的相对位置,其中,所述目标存储位置为所述函数执行位置和运行数据的存储位置,所述初始存储位置为所述目标协程所属进程的存储区域的初始位置;
当检测到所述目标协程的激活触发事件时,根据所述相对位置,获取所述函数执行位置和运行数据;
重新调用所述目标协程的函数,基于所述函数执行位置和运行数据,继续运行所述目标协程。
第二方面,提供了一种运行协程的装置,所述装置包括:
存储模块,用于在目标协程运行的过程中,当所述目标协程挂起时,存储所述目标协程当前的函数执行位置和运行数据,记录目标存储位置和初始存储位置的相对位置,其中,所述目标存储位置为所述函数执行位置和运行数据的存储位置,所述初始存储位置为所述目标协程所属进程的存储区域的初始位置;
获取模块,用于当检测到所述目标协程的激活触发事件时,根据所述相对位置,获取所述函数执行位置和运行数据;
运行模块,用于重新调用所述目标协程的函数,基于所述函数执行位置和运行数据,继续运行所述目标协程。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于腾讯科技(深圳)有限公司,未经腾讯科技(深圳)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710432602.8/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种滚刀刀座
- 下一篇:一种面向众核处理器的全局感知数据主动预取方法及系统