[发明专利]一种协程实现方法、终端设备及存储介质有效
申请号: | 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。本发明通过对协程进行分类,对不同类型的协程采用不同的运行栈分配方案,获得高运行效率与低内存使用率的平衡,更好支持大规模并发服务端的需求。
技术领域
本发明涉及计算机技术领域,尤其是涉及一种协程实现方法、终端设备及存储介质。
背景技术
随着互联网应用的发展,互联网用户的快速增长,对应用软件、网站的服务端性能要求越来越高。服务端程序需要满足低延时、高并发、高稳定性等性能需求,同时需要满足开发效率高、维护性强等开发需求。传统的高性能服务端程序一般采用多进程或多线程技术提高单台服务器的吞吐量。多线程技术能够提高程序响应性,提高多核CPU的利用率,实现逻辑处理的并发执行,但是线程同步处理,线程资源竞争等问题难以妥善处理,一个线程出现异常容易导致程序崩溃,影响系统的稳定,线程的频繁切换也存在较大的性能损失。多进程技术在实现并行逻辑处理能力的同时具有,不同进程间数据隔离安全性高,进程出现异常不影响其他进程,进程内编程简单等优势,但是创建维护进程的资源开销巨大,进程间数据的传输也比较繁琐。针对这些问题,现在服务端程序编程引入了协程技术,协程是线程分时共享技术,使得单线程可以同时处理多个逻辑任务,把异步编程转化为同步编程,无需任何锁操作,在提高程序并发性的同时简化编程复杂度,提高程序性能。
协程是一种线程内调度方案,可以认为它是一种用户态线程,它与线程一样拥有独立的寄存器上下文以及运行栈。协程的实现主要有两种方案:一种是创建协程时首先分配完整的栈空间,当协程切换时只切换栈寄存器,简称独立栈方案;另一种方案是所有协程共享一个运行栈,当协程切离的时拷贝运行栈中的数据保存,协程切回时再把数据复制回运行栈,简称共享栈方案。
独立栈方案有协程切换开销低的特点,但是为了保证协程能够支持大部分函数的本地变量分配、多层函数调用和协程挂起恢复特性,协程运行栈的不能分配得太小。在协程的实际使用中大部分并不会使用这么大的内存空间,造成极大地内存空间浪费。以每个协程分配256K栈空间为例,4G内存计算机最大支持16384个协程,与单进程支持百万级乃至千万级协程的应用需求相距甚远。共享栈方案在协程切换时保存运行栈的真实使用内存空间,具备极高的内存利用率,但是在保存栈空间时需要分配内存,拷贝内存,造成极大地性能开销,所以现有的协程实现方式无法满足高性能服务端的性能需求。
发明内容
为了解决上述问题,本发明旨在提供一种协程实现方法、终端设备及存储介质,通过对协程进行分类,对不同类型的协程采用不同的运行栈分配方案,并且提供模式选择接口,针对某些需要长时工作频繁切换的协程主动设置栈分配方案,获得高运行效率与低内存使用率的平衡,更好支持大规模并发服务端的需求。
具体方案如下:
一种协程实现方法,所述协程包括主协程和工作协程两类,所述工作协程按照其栈方法分别设定为使用共享栈的工作协程和使用独立栈的工作协程,具体实现步骤如下:
S10:在线程里创建主协程,进入S20;
S20:主协程等待响应异步事件,直至当异步事件发生时,将主协程挂起,进入S30;
S30:读取对应工作协程的协程信息块,根据信息块中的栈方法创建对应的工作协程,进入S40;
其中:所述工作协程根据其栈方法的类型有三种创建方式:
方式1:当工作协程为新的工作协程,即之前没创建过的工作协程时,设置工作协程的栈相关寄存器使用工作协程共享栈;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于厦门安胜网络科技有限公司,未经厦门安胜网络科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201711251988.9/2.html,转载请声明来源钻瓜专利网。