[發(fā)明專利]多線程訪問方法及裝置有效
| 申請?zhí)枺?/td> | 201810327912.8 | 申請日: | 2018-04-12 |
| 公開(公告)號: | CN108762942B | 公開(公告)日: | 2020-10-16 |
| 發(fā)明(設(shè)計(jì))人: | 楊亮;陳少杰;張文明 | 申請(專利權(quán))人: | 武漢斗魚網(wǎng)絡(luò)科技有限公司 |
| 主分類號: | G06F9/52 | 分類號: | G06F9/52 |
| 代理公司: | 北京眾達(dá)德權(quán)知識產(chǎn)權(quán)代理有限公司 11570 | 代理人: | 劉杰 |
| 地址: | 430000 湖北省武漢市東湖開*** | 國省代碼: | 湖北;42 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 多線程 訪問 方法 裝置 | ||
本發(fā)明實(shí)施例提供了一種多線程訪問方法及裝置,該方法包括:響應(yīng)于線程對函數(shù)對象的訪問,調(diào)用全局鎖的全局臨界區(qū)對象對全局鍵值對表進(jìn)行加鎖,所述全局鎖配置在預(yù)先創(chuàng)建的全局變量中,所述全局鍵值對表包括鎖對象以及與其對應(yīng)的鍵值之間的對應(yīng)關(guān)系;獲取線程調(diào)用所述全局鎖加鎖時的鍵值;根據(jù)所述加鎖時的鍵值查找所述全局鍵值對表,以獲取與該鍵值對應(yīng)的鎖對象;調(diào)用所述全局鎖的全局臨界區(qū)對象對所述全局鍵值對表進(jìn)行解鎖;調(diào)用獲取到的鎖對象為所述線程訪問的函數(shù)對象進(jìn)行加鎖。本發(fā)明實(shí)施例提供的多線程訪問方法及裝置,解決了通常模式利用類成員鎖實(shí)現(xiàn)線程訪問過程中存在的多線程問題,保證了程序的運(yùn)行穩(wěn)定性。
技術(shù)領(lǐng)域
本發(fā)明涉及多線程訪問技術(shù)領(lǐng)域,尤其涉及一種多線程訪問方法及裝置。
背景技術(shù)
在現(xiàn)代計(jì)算機(jī)程序編程中,多線程被廣泛運(yùn)用,為了保護(hù)相關(guān)的代碼或者變量,在多線程中通常采用鎖機(jī)制來解決。例如在Windows系統(tǒng)中可以采用臨界區(qū)(CriticalSection),互斥體、信號量等方法來實(shí)現(xiàn)鎖功能。以臨界區(qū)為例,利用InitializeCriticalSection系統(tǒng)函數(shù)初始化一個臨界區(qū)對象,然后利用EnterCriticalSection系統(tǒng)函數(shù)對臨界區(qū)進(jìn)行加鎖,這樣其他線程運(yùn)行到調(diào)用該函數(shù)地址時,就會被阻塞;調(diào)用LeaveCriticalSection系統(tǒng)函數(shù)對該臨界區(qū)進(jìn)行解鎖。位于EnterCriticalSection和LeaveCriticalSection之間的代碼就是線程安全的,對于有N個線程同時運(yùn)行的進(jìn)程來說,同時只有一個線程能夠訪問到這之間的代碼。
但是,在C++語言中,如果將一個類對象釋放之后,任何訪問該類對象的成員變量都會引起程序的崩潰。假設(shè)一個包含有臨界區(qū)對象的類對象在一個線程中被釋放了,而另外一個線程再去訪問該類對象中的臨界區(qū)對象時,進(jìn)程就會崩潰。
發(fā)明內(nèi)容
鑒于上述問題,提出了本發(fā)明以便提供一種克服上述問題或者至少部分地解決上述問題的多線程訪問方法及裝置。
本發(fā)明的一個方面,提供了一種多線程訪問方法,所述方法包括:
響應(yīng)于線程對函數(shù)對象的訪問,調(diào)用全局鎖的全局臨界區(qū)對象對全局鍵值對表進(jìn)行加鎖,所述全局鎖配置在預(yù)先創(chuàng)建的全局變量中,所述全局鍵值對表包括鎖對象以及與其對應(yīng)的鍵值之間的對應(yīng)關(guān)系;
獲取線程調(diào)用所述全局鎖加鎖時的鍵值;
根據(jù)所述加鎖時的鍵值查找所述全局鍵值對表,以獲取與該鍵值對應(yīng)的鎖對象;
調(diào)用所述全局鎖的全局臨界區(qū)對象對所述全局鍵值對表進(jìn)行解鎖;
調(diào)用獲取到的鎖對象為所述線程訪問的函數(shù)對象進(jìn)行加鎖。
其中,若沒有從所述全局鍵值對表中查找到與加鎖時的鍵值對應(yīng)的鎖對象,則創(chuàng)建新的鎖對象;以及
將創(chuàng)建的新的鎖對象以及該鎖對象與指定的鍵值之間的對應(yīng)關(guān)系添加到所述全局鍵值對表。
其中,當(dāng)所述線程完成對所述函數(shù)對象的訪問后,所述方法還包括:
調(diào)用全局鎖的全局臨界區(qū)對象對所述全局鍵值對表進(jìn)行加鎖;
獲取線程調(diào)用所述全局鎖解鎖時的鍵值;
根據(jù)所述解鎖時的鍵值查找所述全局鍵值對表,以獲取與該鍵值對應(yīng)的鎖對象;
調(diào)用獲取到的鎖對象對所述線程訪問的函數(shù)對象進(jìn)行解鎖;
調(diào)用所述全局鎖的全局臨界區(qū)對象對所述全局鍵值對表進(jìn)行解鎖。
其中,所述全局鍵值對表為哈希表、線性表、或樹狀表中的任意一個。
本發(fā)明的另一個方面,提供了一種多線程訪問裝置,所述裝置包括:
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于武漢斗魚網(wǎng)絡(luò)科技有限公司,未經(jīng)武漢斗魚網(wǎng)絡(luò)科技有限公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201810327912.8/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 多線程應(yīng)用系統(tǒng)的異常處理方法和異常處理裝置
- 一種面向片上網(wǎng)絡(luò)的多線程調(diào)度實(shí)現(xiàn)方法
- 基于計(jì)算機(jī)多線程多核顯微鏡細(xì)胞圖像快速掃描處理方法
- 一種基于同步鎖的多線程處理方法、終端以及存儲介質(zhì)
- 多線程并發(fā)處理系統(tǒng)及方法
- 海外控股估值流程控制方法、裝置、計(jì)算機(jī)設(shè)備及存儲介質(zhì)
- 讀數(shù)方法、電子裝置、計(jì)算機(jī)設(shè)備及存儲介質(zhì)
- 一種基于云平臺多線程調(diào)度的方法、系統(tǒng)、設(shè)備及介質(zhì)
- 一種基于云平臺的前端多線程調(diào)度方法和系統(tǒng)
- 多線程調(diào)度方法、裝置、電子設(shè)備及存儲介質(zhì)
- 存儲器訪問調(diào)度裝置、調(diào)度方法與存儲器訪問控制系統(tǒng)
- 一種限制用戶訪問的方法和裝置
- 一種訪問信息提供方法及系統(tǒng)
- 數(shù)據(jù)訪問權(quán)限的控制方法及裝置
- 基于智能家居系統(tǒng)的訪問授權(quán)方法、裝置及設(shè)備
- 網(wǎng)站訪問請求的動態(tài)調(diào)度方法及裝置
- 基于訪問頻率的監(jiān)測方法、裝置、設(shè)備和計(jì)算機(jī)存儲介質(zhì)
- 訪問憑證驗(yàn)證方法、裝置、計(jì)算機(jī)設(shè)備及存儲介質(zhì)
- 一種應(yīng)用訪問控制方法、系統(tǒng)和介質(zhì)
- 異常訪問行為的檢測方法、裝置、電子設(shè)備及存儲介質(zhì)





