[发明专利]一种线程退出方法、装置、设备及可读存储介质有效
申请号: | 201910972941.4 | 申请日: | 2019-10-14 |
公开(公告)号: | CN110716755B | 公开(公告)日: | 2023-05-02 |
发明(设计)人: | 李粉 | 申请(专利权)人: | 浙江诺诺网络科技有限公司 |
主分类号: | G06F9/4401 | 分类号: | G06F9/4401;G06F9/52 |
代理公司: | 北京集佳知识产权代理有限公司 11227 | 代理人: | 王云晓 |
地址: | 310000 浙江省杭州市西湖区双龙街199号杭政*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 线程 退出 方法 装置 设备 可读 存储 介质 | ||
本申请公开了一种线程退出方法、装置、设备及可读存储介质。本申请公开的方法包括:接收线程退出命令;确定到达第一屏障的第一线程,以及未到达第一屏障的第二线程;在第二线程退出时,利用第二屏障阻塞第二线程,以唤醒第一线程和第二线程;控制被唤醒后的第一线程和第二线程按照线程退出命令同步退出。本申请在第二线程的退出流程中设置了第二屏障,在接收到线程退出命令后,第二线程便可在退出时遇到第二屏障,此时第一线程和第二线程均到达屏障,因此可被唤醒,并按照线程退出命令退出,从而实现了线程的同步退出,避免了死锁情况的发生。相应地,本申请公开的一种线程退出装置、设备及可读存储介质,也同样具有上述技术效果。
技术领域
本申请涉及计算机技术领域,特别涉及一种线程退出方法、装置、设备及可读存储介质。
背景技术
在现有技术中,一般通过屏障协调多个线程同步执行。具体为:当线程运行到达屏障时会处于休眠状态,以等待其他线程;待其他线程均运行到达该屏障后,所有到达该屏障的线程才被唤醒,从而可执行下一处理流程。
但是,屏障在协调多个线程同步执行的过程中,却引入了另一个问题。假设有两个线程(A和B)同步执行,当前只有A线程运行到达屏障,而B线程还未到达屏障,此时接收到线程退出命令。这种情况下,B线程可以按照线程退出命令直接退出,而A线程由于进入休眠状态,导致无法按照线程退出命令退出,所以会导致A无法退出。
需要说明的是,线程运行到达屏障后处于休眠状态,所以无法执行线程退出命令。又由于未到达屏障的线程已按照线程退出命令退出,所以无法满足线程被唤醒的条件,因此导致A线程一直处于休眠状态,从而产生死锁。死锁指在本申请中用于表示:线程一直阻塞在屏障处,不能继续往下运行的状态。
因此,在接收到线程退出命令时,如何使多个线程退出,避免死锁,是本领域技术人员需要解决的问题。
发明内容
有鉴于此,本申请的目的在于提供一种线程退出方法、装置、设备及可读存储介质,以在接收到线程退出命令时,使多个线程退出,避免死锁。其具体方案如下:
第一方面,本申请提供了一种线程退出方法,包括:
接收线程退出命令;
确定到达第一屏障的第一线程,以及未到达第一屏障的第二线程;
在第二线程按照线程退出命令执行退出的过程中,利用第二屏障阻塞第二线程,以唤醒第一线程和第二线程;
控制被唤醒后的第一线程和第二线程按照线程退出命令同步退出。
优选地,确定到达第一屏障的第一线程,以及未到达第一屏障的第二线程,包括:
根据线程状态确定第一线程和第二线程,第一线程的线程状态为执行状态,第二线程的线程状态为退出状态。
优选地,根据线程状态确定第一线程和第二线程之前,还包括:
当接收到线程退出命令,则将第二线程的线程状态由执行状态转换为退出状态。
优选地,利用第二屏障阻塞第二线程,以唤醒第一线程和第二线程,包括:
若第二线程到达第二屏障,则判断是否到达线程唤醒条件;
若是,则唤醒第一线程和第二线程。
优选地,判断是否到达线程唤醒条件,包括:
判断第一线程和第二线程的数量之和是否等于目标线程组中的线程数量之和,第一线程和第二线程处于目标线程组中。
优选地,控制被唤醒后的第一线程和第二线程按照线程退出命令同步退出之后,还包括:
回收第一屏障和第二屏障占用的计算机资源。
优选地,还包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浙江诺诺网络科技有限公司,未经浙江诺诺网络科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910972941.4/2.html,转载请声明来源钻瓜专利网。