[發明專利]一種讀寫鎖實現方法有效
| 申請號: | 201210511370.2 | 申請日: | 2012-12-03 |
| 公開(公告)號: | CN102999378A | 公開(公告)日: | 2013-03-27 |
| 發明(設計)人: | 李坤;王永炎;郭超;王宏安 | 申請(專利權)人: | 中國科學院軟件研究所 |
| 主分類號: | G06F9/46 | 分類號: | G06F9/46 |
| 代理公司: | 北京君尚知識產權代理事務所(普通合伙) 11200 | 代理人: | 余長江 |
| 地址: | 100190 *** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 讀寫 實現 方法 | ||
技術領域
本發明涉及讀寫鎖實現方法,尤其涉及基于讀寫鎖的線程間的同步方法,可以應用于各種軟件系統研發的軟件開發技術領域,屬于信息技術領域
背景技術
在信息技術領域中,軟件開發涉及很多的技術,包括內存數據組織管理、消息通信、索引技術、同步互斥技術等,本發明關注于軟件開發中線程間的同步技術,在一些特定的軟件系統研發過程中涉及到線程間的同步技術,而且對同步操作具有較高的實時性和高效性的要求,比如說:實時數據庫管理系統、關系數據庫管理系統、中間件等。
現有的并發同步互斥對象(可詳見微軟官方關于互斥對象的說明材料http://msdn.microsoft.com/en-us/library/windows/desktop/ms684266%28v=vs.85%29.as?px)主要有互斥量(Mutex)、信號量(Semaphore)、事件(Event)、臨界區(Critical?Section)(可詳見微軟官方關于臨界區對象的說明材料http://msdn.microsoft.com/en-us/library/windows/desktop/ms682530%28v=vs.85%29.as?px)等,可根據對象所屬層次分為內核態對象和用戶態對象,也可根據用途分為進程間同步技術和線程間同步技術。臨界區是保證在某一時刻只有一個線程能訪問數據的簡便辦法,是用戶態對象;互斥量跟臨界區相似,只有擁有互斥對象的線程才具有訪問資源的權限,但是比臨界區復雜,屬于內核態對象,可以在不同應用進程之間實現對資源的安全共享。信號量用來控制對一個具有有限數量用戶資源進行并發訪問,包含一個使用計數、最大資源數、當前資源計數,最大資源數表示信號量可以控制的最大資源數量,當前資源數表示信號當前可用的資源數量;事件用來通知線程有某些事件已發生,從而喚醒該線程執行后繼任務。互斥量、信號量、事件都是內核態的互斥或同步技術,因此也可用作進程和線程間同步。臨界區只能用作線程間同步,但由于是用戶態技術,沒有從內核態到用戶態的環境切換開銷,因此其性能優于互斥量。
軟件系統中大量的并發請求可以分為只讀請求和讀寫請求,前者可以對共享資源同時操作,后者必須排它性的占有共享資源,不允許他人訪問。這種情況下直接使用互斥量、信號量、事件等都是不合適的,一方面有較大的內核態與用戶態的切換開銷,另一方面沒有區分并發讀寫請求的特點,導致可以并發執行的只讀請求變成串行執行,大大降低了系統效率。因此,需要針對大量并發讀寫請求,精心設計一種線程間同步機制,實現最大化的并發執行,從而提高軟件系統的整體性能。
發明內容
本發明針對實時數據庫管理系統、關系數據庫管理系統、中間件的線程間同步的實時性需求和性能要求,設計并提出了一種實時快速的多線程訪問共享資源的同步方法。
本發明要解決的技術問題
在研發軟件系統過程中通常會遇到多線程并發訪問共享資源的問題,如果并發度比較低,用簡單的互斥量(Mutex)就可以實現。但是,在并發度較高時,一些高性能軟件系統也要求多線程間的同步操作具有較高的性能。并發的多線程按照是否修改共享資源可以分為兩類:只讀線程和修改線程,一個好的多線程同步技術應該允許多個只讀線程可以同時訪問共享資源,其次更新線程應該在等待當前只讀線程完成操作后即可馬上獲取共享資源,不會出現后繼的只讀線程從修改線程搶占共享資源的情況。由于主流操作系統如Windows?2000、Windows?XP以及Windows?2003?Server沒有內置讀寫鎖,因此通常需要開發人員耗費較長的時間來設計和實現線程間的讀寫鎖,而且最終實現的效果并不一定能夠滿足軟件系統對線程間同步的高性能要求。
本發明針對這類技術問題,提出了一種通用的、實時快速的線程間的讀寫鎖解決方案如下,給出了讀寫鎖的具體實現細節。一方面,可以大大減少開發人員的時間,另一方面,可以滿足軟件系統對多個讀寫線程之間進行同步的性能要求。
一種讀寫鎖實現方法,其步驟包括:
1)初始化讀寫鎖,根據讀寫鎖組件創建讀臨界區、寫臨界區和寫通知事件三個對象,所述讀臨界區和所述寫臨界區初始化為可進入狀態,所述寫通知事件初始化為被觸發狀態;
2)當多個讀線程和/或寫線程并發訪問共享資源,根據所述臨界區保護所述共享資源內關鍵代碼,設置讀寫鎖;
2-1)申請讀鎖接口時,先進入寫臨界區再進入讀臨界區,根據讀鎖個數阻止寫或讀線程的操作,同時所述寫通知事件設為非觸發狀態;釋放讀鎖接口時,進入讀臨界區,若此時讀鎖個數為0則同時將所述寫通知事件設為觸發狀態;
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于中國科學院軟件研究所,未經中國科學院軟件研究所許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201210511370.2/2.html,轉載請聲明來源鉆瓜專利網。





