[發明專利]一種基于正副本切換的多線程數據無鎖讀寫方法在審
| 申請號: | 201811628744.2 | 申請日: | 2018-12-28 |
| 公開(公告)號: | CN109783243A | 公開(公告)日: | 2019-05-21 |
| 發明(設計)人: | 劉慰慰;楊昆;閻星娥;嚴榮明;張林;魏紅道;江汀;張炎;陸啟浩;王超 | 申請(專利權)人: | 南京華飛數據技術有限公司 |
| 主分類號: | G06F9/52 | 分類號: | G06F9/52;G06F9/48;G06F9/50 |
| 代理公司: | 南京品智知識產權代理事務所(普通合伙) 32310 | 代理人: | 奚曉寧;楊陳慶 |
| 地址: | 210000 江蘇省南京市建鄴*** | 國省代碼: | 江蘇;32 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 內存數據 讀寫 副本模塊 多線程 寫操作 無鎖 副本保留 工作線程 計算機技術領域 數據寫入內存 程序初始化 工作模塊 讀操作 一次性 拷貝 更新 | ||
1.一種基于正副本切換的多線程數據無鎖讀寫系統,其特征在于:包括內存數據正本模塊、內存數據副本模塊、內存數據副本保留模塊、寫操作和正副本切換模塊、以及工作模塊;
內存數據正本模塊,又稱待讀寫內存數據的正本指針模塊,簡稱正本指針,用于在該模塊內進行待讀寫內存數據所有的增加、刪除和修改的操作;
內存數據副本模塊,又稱內存數據的副本指針模塊,簡稱副本指針,用于在該模塊內進行內存數據的所有讀取操作;
內存數據副本保留模塊,又稱內存數據副本的保留指針模塊,簡稱保留指針,用于臨時存放當前副本的指針,并保留一個正副本切換周期;
寫操作和正副本切換模塊包括寫操作子模塊和正副本切換子模塊,寫操作子模塊用于負責在內存數據正本模塊中按上述方法進行數據的增加、修改或刪除操作;正副本切換子模塊用于負責每隔一個周期將正本、副本和保留的數據進行更新同步;
工作模塊即一般的工作線程,負責從內存數據副本模塊中取出數據進行具體的業務邏輯功能實現。
2.根據權利要求1所述的基于正副本切換的多線程數據無鎖讀寫系統,其特征在于:一種基于正副本切換的多線程數據無鎖讀寫方法,包括如下步驟,
1)在程序初始化階段,先一次性將現有數據寫入內存數據正本模塊,并拷貝一份至內存數據副本模塊;
2)后續建立進行讀操作、寫操作和正副本切換操作的工作線程;其中寫操作和正副本切換操作安排在相同且唯一的工作線程當中,循環執行;寫操作和正副本切換操作,這兩個操作按先后順序執行,保證寫操作和正副本切換操作無需加鎖;讀操作則安排在多個工作線程中循環執行,由于讀操作實際是指針賦值,屬于原子操作,無須進行加鎖;
3)在寫操作和正副本切換操作的工作線程中,規定一個正副本切換周期和一個寫操作周期,其中切換操作周期的時長大于寫操作周期;在一個切換操作周期內,每隔一個寫操作周期進行一次正本數據更新操作;當一個切換操作周期過完后,進行一次正副本切換操作,更新內存數據副本模塊和內存數據副本保留模塊。
3.根據權利要求2所述的基于正副本切換的多線程數據無鎖讀寫系統,其特征在于,所述步驟3)中所述的正副本切換流程,包括如下步驟:
3-1)清空保留指針;
判斷保留指針是否為空,如果是則跳過,否則將保留指針的內存空間都釋放掉;
3-2)更新接管保留指針;
將副本指針的值賦給保留指針,保留至下一次正、副本切換;
3-3)生成新的副本指針;
先將正本指針的內存空間拷貝一份至臨時指針,然后將臨時指針賦給副本指針。
4.根據權利要求3所述的基于正副本切換的多線程數據無鎖讀寫系統,其特征在于,步驟3-2)中的指針賦值是原子操作,能夠確保此次操作前后期間的讀操作不會異常。
5.根據權利要求3所述的基于正副本切換的多線程數據無鎖讀寫系統,其特征在于,步驟3-3)中的指針賦值是原子操作,能夠保證此次操作前后期間的讀操作讀取到的數據是新副本或老副本其中之一,不會讀取到異常數據。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于南京華飛數據技術有限公司,未經南京華飛數據技術有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201811628744.2/1.html,轉載請聲明來源鉆瓜專利網。





