[發(fā)明專利]基于協(xié)程的任務(wù)執(zhí)行方法、裝置、存儲介質(zhì)及電子設(shè)備有效
| 申請?zhí)枺?/td> | 202310519101.9 | 申請日: | 2023-05-09 |
| 公開(公告)號: | CN116225728B | 公開(公告)日: | 2023-07-14 |
| 發(fā)明(設(shè)計)人: | 李二郎;王豪邁;張旭明;胥昕 | 申請(專利權(quán))人: | 北京星辰天合科技股份有限公司 |
| 主分類號: | G06F9/52 | 分類號: | G06F9/52;G06F9/50;G06F9/48 |
| 代理公司: | 北京康信知識產(chǎn)權(quán)代理有限責(zé)任公司 11240 | 代理人: | 黃海英 |
| 地址: | 100094 北京市海淀*** | 國省代碼: | 北京;11 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 基于 任務(wù) 執(zhí)行 方法 裝置 存儲 介質(zhì) 電子設(shè)備 | ||
1.一種基于協(xié)程的任務(wù)執(zhí)行方法,其特征在于,通過線程中的多個協(xié)程協(xié)同完成目標(biāo)任務(wù),所述方法包括:
在所述線程中的任一協(xié)程執(zhí)行子任務(wù)之前,根據(jù)所述子任務(wù)確定需要獲取的目標(biāo)自旋鎖,其中,所述子任務(wù)是所述目標(biāo)任務(wù)中的子任務(wù),所述目標(biāo)自旋鎖用于對所述子任務(wù)的執(zhí)行代碼進(jìn)行加鎖;
讀取內(nèi)存中的預(yù)設(shè)信息,并執(zhí)行所述目標(biāo)自旋鎖的獲取操作,其中,所述預(yù)設(shè)信息記錄有至少一個自旋鎖的被占用狀態(tài);
在獲取所述目標(biāo)自旋鎖失敗的情況下,控制所述協(xié)程釋放CPU資源,并在檢測到所述協(xié)程下次被調(diào)度的情況下,再次申請獲取所述目標(biāo)自旋鎖;
在獲取所述目標(biāo)自旋鎖成功的情況下,基于所述CPU資源執(zhí)行所述子任務(wù),并在所述子任務(wù)執(zhí)行完畢的情況下釋放所述目標(biāo)自旋鎖。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,在所述內(nèi)存中設(shè)置有一個自旋鎖的情況下,讀取內(nèi)存中的預(yù)設(shè)信息,并執(zhí)行所述目標(biāo)自旋鎖的獲取操作包括:
讀取所述目標(biāo)自旋鎖的被占用狀態(tài),并基于所述目標(biāo)自旋鎖的被占用狀態(tài)獲取所述目標(biāo)自旋鎖;
在所述目標(biāo)自旋鎖未被占用的情況下,確定獲取所述目標(biāo)自旋鎖成功;
在所述目標(biāo)自旋鎖被占用的情況下,確定獲取所述目標(biāo)自旋鎖失敗。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,在所述內(nèi)存中設(shè)置有至少兩個自旋鎖的情況下,讀取內(nèi)存中的預(yù)設(shè)信息,并執(zhí)行所述目標(biāo)自旋鎖的獲取操作包括:
判斷所述內(nèi)存中是否存在高級別的自旋鎖,其中,所述高級別的自旋鎖是指級別高于所述目標(biāo)自旋鎖的自旋鎖;
在存在所述高級別的自旋鎖的情況下,讀取所述高級別的自旋鎖的被占用狀態(tài)以及所述目標(biāo)自旋鎖的被占用狀態(tài),并基于所述高級別的自旋鎖的被占用狀態(tài)以及所述目標(biāo)自旋鎖的被占用狀態(tài)獲取所述目標(biāo)自旋鎖;
若所述高級別的自旋鎖和所述目標(biāo)自旋鎖均未被占用,確定獲取所述目標(biāo)自旋鎖成功,若所述高級別的自旋鎖和/或所述目標(biāo)自旋鎖被占用,確定獲取所述目標(biāo)自旋鎖失敗;
在不存在所述高級別的自旋鎖的情況下,讀取所述目標(biāo)自旋鎖的被占用狀態(tài),并基于所述目標(biāo)自旋鎖的被占用狀態(tài)獲取所述目標(biāo)自旋鎖;
在所述目標(biāo)自旋鎖未被占用的情況下,確定獲取所述目標(biāo)自旋鎖成功,在所述目標(biāo)自旋鎖被占用的情況下,確定獲取所述目標(biāo)自旋鎖失敗。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,在獲取所述目標(biāo)自旋鎖成功的情況下,基于所述CPU資源執(zhí)行所述子任務(wù)包括:
在執(zhí)行所述子任務(wù)的過程中,若當(dāng)前協(xié)程需要等待其他協(xié)程的調(diào)度結(jié)果,則控制所述協(xié)程釋放所述CPU資源,并持續(xù)占用所述目標(biāo)自旋鎖,在所述協(xié)程下次被調(diào)度的情況下繼續(xù)執(zhí)行所述子任務(wù),直至所述子任務(wù)執(zhí)行完畢。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,在獲取所述目標(biāo)自旋鎖成功的情況下,基于所述CPU資源執(zhí)行所述子任務(wù)包括:
在所述內(nèi)存中設(shè)置有至少兩個自旋鎖的情況下,判斷是否存在處于被占用狀態(tài)的低級別的自旋鎖,其中,所述低級別的自旋鎖是指級別低于所述目標(biāo)自旋鎖的自旋鎖;
在存在處于被占用狀態(tài)的低級別的自旋鎖的情況下,檢測占用所述低級別的自旋鎖的協(xié)程是否釋放所述CPU資源;
在所述占用所述低級別的自旋鎖的協(xié)程釋放所述CPU資源的情況下,執(zhí)行所述子任務(wù)。
6.根據(jù)權(quán)利要求1所述的方法,其特征在于,通過調(diào)用第一原子操作函數(shù)讀取內(nèi)存中的預(yù)設(shè)信息,以申請獲取所述目標(biāo)自旋鎖;通過調(diào)用第二原子操作函數(shù)對所述預(yù)設(shè)信息中的值進(jìn)行調(diào)整,以釋放所述目標(biāo)自旋鎖。
7.根據(jù)權(quán)利要求3至6中任意一項所述的方法,其特征在于,在所述內(nèi)存中設(shè)置有獨占鎖和共享鎖的情況下,所述獨占鎖的級別高于所述共享鎖的級別。
8.根據(jù)權(quán)利要求3至6中任意一項所述的方法,其特征在于,在所述內(nèi)存中設(shè)置有寫數(shù)據(jù)鎖和讀數(shù)據(jù)鎖的情況下,所述寫數(shù)據(jù)鎖的級別高于所述讀數(shù)據(jù)鎖的級別。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于北京星辰天合科技股份有限公司,未經(jīng)北京星辰天合科技股份有限公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202310519101.9/1.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 以注射方式執(zhí)行死刑的自動執(zhí)行車的執(zhí)行床
- 過程執(zhí)行裝置、過程執(zhí)行方法以及過程執(zhí)行程序
- 用以執(zhí)行跳舞電子游戲的執(zhí)行系統(tǒng)及其執(zhí)行方法
- 策略執(zhí)行系統(tǒng)及其執(zhí)行方法
- 腳本執(zhí)行系統(tǒng)和腳本執(zhí)行方法
- 命令執(zhí)行設(shè)備、命令執(zhí)行系統(tǒng)、命令執(zhí)行方法以及命令執(zhí)行程序
- 程序執(zhí)行裝置、程序執(zhí)行系統(tǒng)以及程序執(zhí)行方法
- 處理執(zhí)行設(shè)備和由該處理執(zhí)行設(shè)備執(zhí)行的方法
- 有序任務(wù)的執(zhí)行方法、執(zhí)行裝置和執(zhí)行系統(tǒng)
- 執(zhí)行器(閥門執(zhí)行器)





