[發明專利]一種線程退出方法、裝置、設備及可讀存儲介質有效
| 申請號: | 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.szxzyx.cn/pat/books/201910972941.4/2.html,轉載請聲明來源鉆瓜專利網。





