[发明专利]基于协程的任务执行方法、装置、存储介质及电子设备有效
申请号: | 202310519101.9 | 申请日: | 2023-05-09 |
公开(公告)号: | CN116225728B | 公开(公告)日: | 2023-07-14 |
发明(设计)人: | 李二郎;王豪迈;张旭明;胥昕 | 申请(专利权)人: | 北京星辰天合科技股份有限公司 |
主分类号: | G06F9/52 | 分类号: | G06F9/52;G06F9/50;G06F9/48 |
代理公司: | 北京康信知识产权代理有限责任公司 11240 | 代理人: | 黄海英 |
地址: | 100094 北京市海淀*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 任务 执行 方法 装置 存储 介质 电子设备 | ||
本申请公开了一种基于协程的任务执行方法、装置、存储介质及电子设备。该方法包括:在线程中的任一协程执行子任务之前,根据子任务确定需要获取的目标自旋锁,其中,目标自旋锁用于对子任务的执行代码进行加锁;读取内存中的预设信息,并执行目标自旋锁的获取操作,其中,预设信息记录有至少一个自旋锁的被占用状态;在获取目标自旋锁失败的情况下,控制协程释放CPU资源,并在检测到协程下次被调度的情况下,再次申请获取目标自旋锁;在获取目标自旋锁成功的情况下,基于CPU资源执行子任务,并在子任务执行完毕的情况下释放目标自旋锁。通过本申请,解决了相关技术中在线程内执行任务时,程序循环尝试拿锁浪费CPU资源的问题。
技术领域
本申请涉及计算机技术领域,具体而言,涉及一种基于协程的任务执行方法、装置、存储介质及电子设备。
背景技术
在线程内执行任务时,通常是在一个线程上下文不停的尝试拿锁,通过锁对某一段临界区域代码进行保护,并执行该临界区域代码来实现任务的执行。
需要说明的是,在程序拿到锁前,会一直循环尝试拿锁,占用该程序运行的线程的上下文和当前线程运行的CPU的核,尤其在多个并发任务抢同一个锁的时候,发生大量的无用循环尝试拿锁操作,在没有拿到锁的这段时间,会浪费大量的CPU时间片,降低程序的真实CPU利用效率。
针对相关技术中在线程内执行任务时,程序循环尝试拿锁浪费CPU资源的问题,目前尚未提出有效的解决方案。
发明内容
本申请提供一种基于协程的任务执行方法、装置、存储介质及电子设备,以解决相关技术中在线程内执行任务时,程序循环尝试拿锁浪费CPU资源的问题。
根据本申请的一个方面,提供了一种基于协程的任务执行方法。通过线程中的多个协程协同完成目标任务,该方法包括:在线程中的任一协程执行子任务之前,根据子任务确定需要获取的目标自旋锁,其中,子任务是目标任务中的子任务,目标自旋锁用于对子任务的执行代码进行加锁;读取内存中的预设信息,并执行目标自旋锁的获取操作,其中,预设信息记录有至少一个自旋锁的被占用状态;在获取目标自旋锁失败的情况下,控制协程释放CPU资源,并在检测到协程下次被调度的情况下,再次申请获取目标自旋锁;在获取目标自旋锁成功的情况下,基于CPU资源执行子任务,并在子任务执行完毕的情况下释放目标自旋锁。
可选地,在内存中设置有一个自旋锁的情况下,读取内存中的预设信息,并执行目标自旋锁的获取操作包括:读取目标自旋锁的被占用状态,并基于目标自旋锁的被占用状态获取目标自旋锁;在目标自旋锁未被占用的情况下,确定获取目标自旋锁成功;在目标自旋锁被占用的情况下,确定获取目标自旋锁失败。
可选地,在内存中设置有至少两个自旋锁的情况下,读取内存中的预设信息,并执行目标自旋锁的获取操作包括:判断内存中是否存在高级别的自旋锁,其中,高级别的自旋锁是指级别高于目标自旋锁的自旋锁;在存在高级别的自旋锁的情况下,读取高级别的自旋锁的被占用状态以及目标自旋锁的被占用状态,并基于高级别的自旋锁的被占用状态以及目标自旋锁的被占用状态获取目标自旋锁;若高级别的自旋锁和目标自旋锁均未被占用,确定获取目标自旋锁成功,若高级别的自旋锁和/或目标自旋锁被占用,确定获取目标自旋锁失败;在不存在高级别的自旋锁的情况下,读取目标自旋锁的被占用状态,并基于目标自旋锁的被占用状态获取目标自旋锁;在目标自旋锁未被占用的情况下,确定获取目标自旋锁成功,在目标自旋锁被占用的情况下,确定获取目标自旋锁失败。
可选地,在获取目标自旋锁成功的情况下,基于CPU资源执行子任务包括:在执行子任务的过程中,若当前协程需要等待其他协程的调度结果,则控制协程释放CPU资源,并持续占用目标自旋锁,在协程下次被调度的情况下继续执行子任务,直至子任务执行完毕。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京星辰天合科技股份有限公司,未经北京星辰天合科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202310519101.9/2.html,转载请声明来源钻瓜专利网。