[發明專利]一種讀寫鎖實現方法有效
| 申請號: | 201210511370.2 | 申請日: | 2012-12-03 |
| 公開(公告)號: | CN102999378A | 公開(公告)日: | 2013-03-27 |
| 發明(設計)人: | 李坤;王永炎;郭超;王宏安 | 申請(專利權)人: | 中國科學院軟件研究所 |
| 主分類號: | G06F9/46 | 分類號: | G06F9/46 |
| 代理公司: | 北京君尚知識產權代理事務所(普通合伙) 11200 | 代理人: | 余長江 |
| 地址: | 100190 *** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 讀寫 實現 方法 | ||
1.一種讀寫鎖實現方法,其步驟包括:
1)初始化讀寫鎖,根據讀寫鎖組件創建讀臨界區、寫臨界區和寫通知事件三個對象,所述讀臨界區和所述寫臨界區初始化為可進入狀態,所述寫通知事件初始化為被觸發狀態;
2)當多個讀線程和/或寫線程并發訪問共享資源,根據所述臨界區保護所述共享資源內關鍵代碼,設置讀寫鎖;
2-1)申請讀鎖接口時,先進入寫臨界區再進入讀臨界區,根據讀鎖個數阻止寫或讀線程的操作,同時所述寫通知事件設為非觸發狀態;釋放讀鎖接口時,進入讀臨界區,若讀鎖個數為0則同時將所述寫通知事件設為觸發狀態;
2-2)申請寫鎖接口時,先進入寫臨界區再進入讀臨界區,根據寫鎖個數阻止寫或讀線程的操作,同時所述寫通知事件設為非觸發狀態;釋放寫鎖接口時,進入讀臨界區,同時所述寫通知事件設為觸發狀態;
3)遍歷所述2-1)至2-2)返回讀寫鎖信息完成讀寫鎖設置,實現資源共享。
2.如權利要求1所述的讀寫鎖實現方法,其特征在于,所述讀寫鎖組件中定義:公開成員構造函數CReadWriteLock和析構函數~CReadWriteLock;申請讀鎖接口函數ReadLock和釋放讀鎖接口函數ReadUnlock;申請寫鎖WriteLock接口函數和釋放寫鎖接口函數WriteUnlock。
3.如權利要求1或2所述的讀寫鎖實現方法,其特征在于,所述讀寫鎖組件中還定義了四個私有成員:最大讀鎖個數m_ulMaxReadCount;讀臨界區m_hReadCriticalSection;寫臨界區m_hWriteCriticalSection;寫通知事件m_hWriteNotifyEvent。
4.如權利要求3所述的讀寫鎖實現方法,其特征在于,所述最大讀鎖個數m_ulMaxReadCount默認為5。
5.如權利要求1所述的讀寫鎖實現方法,其特征在于,所述步驟2-2)中申請寫鎖時,設置一單位為毫秒級的超時等待時間,在超過所述等待時間后仍未獲得寫鎖即返回失敗。
6.如權利要求1所述的讀寫鎖實現方法,其特征在于,所述步驟2-1)中,根據讀鎖個數阻止寫或讀線程的操作方法如下:
2-1-1)進入所述兩個臨界區后,若發現當前讀鎖個數已經達到最大數目,則返回失敗,否則說明當前線程可繼續進行讀鎖操作;
2-1-2)當所述步驟2-1-1)中當前讀鎖數目未達到最大數目,可增加當前讀鎖個數,如果增加后讀鎖個數為1,則不能允許寫線程進行操作。
7.如權利要求1所述的讀寫鎖實現方法,其特征在于,所述步驟2-2)中,根據寫鎖個數阻止寫或讀線程的操作的方法如下:
2-2-1)先進入寫臨界區阻止其它線程申請讀鎖或寫鎖,然后在設定的等待時間內等待寫通知事件以確保沒有其它線程對共享資源進行讀寫操作;
2-2-2)若在所述設定的等待時間內寫通知事件沒有被觸發,則等待超時,返回失敗;若在指定時間內寫通知事件被觸發,則說明此時已沒有讀線程,獲得獨占的寫鎖,然后將寫通知事件設置為非觸發狀態,只要有讀鎖或寫鎖存在,就不允許新的寫鎖申請,返回成功;
2-2-3)所述步驟2-2-2)如果返回成功,申請寫鎖線程不會離開寫臨界區,當返回失敗,申請寫鎖的線程就要馬上離開寫臨界區。
8.如權利要求1所述的讀寫鎖實現方法,其特征在于,
所述釋放讀鎖過程中,只進入讀臨界區,不進入寫臨界區,然后將讀鎖個數減1,當減到0時,將通知事件設為觸發狀態,退出讀臨界區;
所述釋放寫鎖過程中,先將寫通知事件設為觸發狀態,再退出寫臨界區。
9.如權利要求1所述的讀寫鎖實現方法,其特征在于,所述讀寫鎖在Windows?2000、Windows?XP以及Windows?2003?Server中沒有內置讀寫鎖的操作系統中進行操作。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于中國科學院軟件研究所,未經中國科學院軟件研究所許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201210511370.2/1.html,轉載請聲明來源鉆瓜專利網。





