[发明专利]一种协程实现方法、终端设备及存储介质有效
申请号: | 201711251988.9 | 申请日: | 2017-12-01 |
公开(公告)号: | CN108021449B | 公开(公告)日: | 2020-07-31 |
发明(设计)人: | 陈腾跃;孟方方;叶青;梁煜麓;罗佳 | 申请(专利权)人: | 厦门安胜网络科技有限公司 |
主分类号: | G06F9/50 | 分类号: | G06F9/50;G06F9/48 |
代理公司: | 厦门市精诚新创知识产权代理有限公司 35218 | 代理人: | 方惠春 |
地址: | 361000 福建省厦门市*** | 国省代码: | 福建;35 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明涉及一种协程实现方法、终端设备及存储介质,在该方法中,包括以下步骤:S10:在线程里创建主协程,进入S20;S20:主协程等待响应异步事件,直至当异步事件发生时,将主协程挂起,进入S30;S30:读取对应工作协程的协程信息块,根据信息块中的栈方法创建对应的工作协程,进入S40;S40:当工作协程处理完成后,根据工作协程的栈方法的类型切换回主协程,之后返回S20。本发明通过对协程进行分类,对不同类型的协程采用不同的运行栈分配方案,获得高运行效率与低内存使用率的平衡,更好支持大规模并发服务端的需求。 | ||
搜索关键词: | 一种 实现 方法 终端设备 存储 介质 | ||
【主权项】:
1.一种协程实现方法,其特征在于:所述协程包括主协程和工作协程两类,所述工作协程按照其栈方法分别设定为使用共享栈的工作协程和使用独立栈的工作协程,具体实现步骤如下:S10:在线程里创建主协程,进入S20;S20:主协程等待响应异步事件,直至当异步事件发生时,将主协程挂起,进入S30;S30:读取对应工作协程的协程信息块,根据信息块中的栈方法创建对应的工作协程,进入S40;其中:所述工作协程根据其栈方法的类型有三种创建方式:方式1:当工作协程为新的工作协程,即之前没创建过的工作协程时,设置工作协程的栈相关寄存器使用工作协程共享栈;方式2:当工作协程为使用共享栈方法的已存在工作协程时,从堆内存中拷贝该工作协程栈数据至共享栈,恢复工作协程寄存器数据,设置栈相关寄存器使用工作协程共享栈;方式3:当工作协程为使用独立栈方法的已存在工作协程时,栈相关寄存器使用该工作协程独立运行栈,恢复工作协程寄存器数据;S40:当工作协程处理完成后,切换回主协程,之后返回S20;其中:所述工作协程切换回主协程根据工作协程的栈方法的类型有三种方式:方式1:工作协程不需要被保存的情况下切换回主协程时,清理协程信息块,恢复主协程寄存器数据,设置栈相关寄存器使用主协程独立运行栈;方式2:工作协程使用共享栈方式被挂起切换至主协程时,计算该工作协程所真实使用的共享栈大小,分配同等大小堆内存块,拷工作协程贝共享栈中的数据至分配的堆内存中,保存工作协程寄存器数据,恢复主协程寄存器数据,设置栈相关寄存器使用主协程独立栈;方式3:工作协程使用独立栈方式被挂起切换至主协程时,分配独立栈对应的堆内存块,标记该堆内存块为该工作协程独立栈,拷贝工作协程共享栈中的数据至新分配的堆内存块中,保存工作协程寄存器数据,恢复主协程寄存器数据,设置栈相关寄存器使用主协程独立栈。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于厦门安胜网络科技有限公司,未经厦门安胜网络科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201711251988.9/,转载请声明来源钻瓜专利网。