[發(fā)明專利]讀寫鎖的加鎖、釋放方法及相關(guān)系統(tǒng)有效
| 申請(qǐng)?zhí)枺?/td> | 201910218297.1 | 申請(qǐng)日: | 2019-03-21 |
| 公開(公告)號(hào): | CN109947575B | 公開(公告)日: | 2021-08-24 |
| 發(fā)明(設(shè)計(jì))人: | 柳正龍;何仲君 | 申請(qǐng)(專利權(quán))人: | 恒生電子股份有限公司 |
| 主分類號(hào): | G06F9/52 | 分類號(hào): | G06F9/52 |
| 代理公司: | 北京集佳知識(shí)產(chǎn)權(quán)代理有限公司 11227 | 代理人: | 李慧引;王寶筠 |
| 地址: | 310053 浙江省杭州市*** | 國省代碼: | 浙江;33 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 讀寫 加鎖 釋放 方法 相關(guān) 系統(tǒng) | ||
本發(fā)明提供了一種讀寫鎖的加鎖方法,包括:當(dāng)訪問者要訪問共享資源時(shí),判斷讀寫鎖的互斥鎖字段是否為第一預(yù)設(shè)標(biāo)識(shí),所述第一預(yù)設(shè)標(biāo)識(shí)用于表示所述讀寫鎖中的互斥鎖處于空閑狀態(tài);若判斷出所述互斥鎖字段為所述第一預(yù)設(shè)標(biāo)識(shí),則將所述互斥鎖字段設(shè)置為所述訪問者的標(biāo)識(shí),所述訪問者的標(biāo)識(shí)為預(yù)先分配給所述訪問者的唯一標(biāo)識(shí);判斷所述讀寫鎖的當(dāng)前狀態(tài)是否滿足加讀寫鎖條件;若判斷出所述讀寫鎖的當(dāng)前狀態(tài)滿足加讀寫鎖條件,則將所述訪問者標(biāo)識(shí)記錄到所述讀寫鎖的寫者字段或讀者字段中;將所述互斥鎖字段設(shè)置為所述第一預(yù)設(shè)標(biāo)識(shí)。通過記錄的訪問者標(biāo)識(shí),可知道訪問者獲取鎖的情況,從而在訪問者異常終止后,正確釋放互斥鎖和讀寫鎖,將讀寫鎖恢復(fù)。
技術(shù)領(lǐng)域
本發(fā)明涉及數(shù)據(jù)讀寫技術(shù)領(lǐng)域,特別涉及一種讀寫鎖的加鎖、釋放方法及相關(guān)系統(tǒng)。
背景技術(shù)
在對(duì)于同一資源的訪問讀多寫少的應(yīng)用場景中,采用互斥鎖會(huì)很大程度的降低程序的效率,所以為了提高并發(fā)性能,程序設(shè)計(jì)時(shí),經(jīng)常會(huì)用到讀寫鎖。
讀寫鎖把對(duì)共享資源的訪問者劃分成讀者和寫者,讀者只對(duì)共享資源進(jìn)行讀訪問,寫者則需要對(duì)共享資源進(jìn)行寫操作。一般情況下,讀寫鎖能允許同時(shí)有多個(gè)讀者來訪問共享資源,且允許單個(gè)寫者修改共享資源。訪問者需要獲取讀寫鎖,才能訪問共享資源,在訪問完成后將讀寫鎖釋放。
訪問者要先獲取讀寫鎖內(nèi)部的互斥鎖,才能獲取和釋放讀寫鎖,在完成獲取或是釋放讀寫鎖后,將互斥鎖釋放。所述互斥鎖在任意時(shí)刻僅能被一個(gè)訪問者持有。訪問者獲取互斥鎖后,在加讀寫鎖時(shí),將寫者標(biāo)識(shí)設(shè)置為1或?qū)⒆x者計(jì)數(shù)器加1,完成加讀寫鎖。相應(yīng)的,在解讀寫鎖時(shí),將寫者字段設(shè)置為0或?qū)⒆x者減1,完成解讀寫鎖。
當(dāng)存在訪問者發(fā)生異常終止時(shí),無法確認(rèn)異常終止的訪問者是否已獲取了讀寫鎖中的互斥鎖,從而無法確定是否需要釋放互斥鎖。若在不確定情況下釋放互斥鎖,可能會(huì)將正常運(yùn)行的訪問者的互斥鎖釋放了。若不釋放互斥鎖,則所述異常終止的訪問者可能已經(jīng)獲得了互斥鎖。此時(shí),其他訪問者將無法獲取互斥鎖從而獲取讀寫鎖。
并且,根據(jù)寫者標(biāo)識(shí)和讀者計(jì)數(shù)器,也無法確定異常終止的訪問者是否已經(jīng)獲取了讀寫鎖,同樣也無法確定是否要釋放讀寫鎖。也無法正確的釋放異常終止的訪問者獲取的讀寫鎖。使得讀寫鎖無法被恢復(fù),出現(xiàn)死鎖。所以,在訪問者發(fā)生異常終止后,能夠明確知道互斥鎖與讀寫鎖的被獲取情況,從而能恢復(fù)讀寫鎖,顯得尤為重要。
發(fā)明內(nèi)容
基于上述現(xiàn)有技術(shù)的不足,本發(fā)明提出一種讀寫鎖的加鎖、釋放方法及相關(guān)系統(tǒng),以解決訪問者發(fā)生異常終止時(shí),無法正確恢復(fù)讀寫鎖的問題。
為解決上述問題,現(xiàn)提出的方案如下:
本發(fā)明的第一方面提供了一種讀寫鎖的加鎖方法,包括:
當(dāng)訪問者要訪問共享資源時(shí),判斷讀寫鎖的互斥鎖字段是否為第一預(yù)設(shè)標(biāo)識(shí),所述第一預(yù)設(shè)標(biāo)識(shí)用于表示所述讀寫鎖中的互斥鎖處于空閑狀態(tài);
若判斷出所述互斥鎖字段為所述第一預(yù)設(shè)標(biāo)識(shí),則將所述互斥鎖字段設(shè)置為所述訪問者的標(biāo)識(shí),所述訪問者的標(biāo)識(shí)為預(yù)先分配給所述訪問者的唯一標(biāo)識(shí);
判斷所述讀寫鎖的當(dāng)前狀態(tài)是否滿足加讀寫鎖條件;
若判斷出所述讀寫鎖的當(dāng)前狀態(tài)滿足加讀寫鎖條件,則將所述訪問者標(biāo)識(shí)記錄到所述讀寫鎖的寫者字段或讀者字段中;
將所述互斥鎖字段設(shè)置為所述第一預(yù)設(shè)標(biāo)識(shí)。
可選地,所述讀寫鎖,包括:所述互斥鎖字段、所述寫者字段及所述讀者字段;
其中,所述互斥鎖字段用于在所述訪問者獲取所述互斥鎖時(shí),設(shè)置為所述訪問者的標(biāo)識(shí);所述寫者字段用于在所述訪問者獲取寫鎖時(shí),設(shè)置為所述訪問者的標(biāo)識(shí);所述讀者字段包括讀者鏈表,所述讀者鏈表用于在所述訪問者獲取讀鎖時(shí),記錄所述訪問者的標(biāo)識(shí)。
可選地,所述判斷所述讀寫鎖的當(dāng)前狀態(tài)是否滿足加讀寫鎖條件,包括:
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于恒生電子股份有限公司,未經(jīng)恒生電子股份有限公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請(qǐng)聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201910218297.1/2.html,轉(zhuǎn)載請(qǐng)聲明來源鉆瓜專利網(wǎng)。
- 一種數(shù)據(jù)庫讀寫分離的方法和裝置
- 一種手機(jī)動(dòng)漫人物及背景創(chuàng)作方法
- 一種通訊綜合測試終端的測試方法
- 一種服裝用人體測量基準(zhǔn)點(diǎn)的獲取方法
- 系統(tǒng)升級(jí)方法及裝置
- 用于虛擬和接口方法調(diào)用的裝置和方法
- 線程狀態(tài)監(jiān)控方法、裝置、計(jì)算機(jī)設(shè)備和存儲(chǔ)介質(zhì)
- 一種JAVA智能卡及其虛擬機(jī)組件優(yōu)化方法
- 檢測程序中方法耗時(shí)的方法、裝置及存儲(chǔ)介質(zhì)
- 函數(shù)的執(zhí)行方法、裝置、設(shè)備及存儲(chǔ)介質(zhì)





