[發明專利]線程間的數據更新方法、裝置和存儲介質在審
| 申請號: | 202110011353.1 | 申請日: | 2021-01-06 |
| 公開(公告)號: | CN112699138A | 公開(公告)日: | 2021-04-23 |
| 發明(設計)人: | 劉濱;劉小蘇;王星宇;韓錦;潘正頤;侯大為 | 申請(專利權)人: | 常州微億智造科技有限公司 |
| 主分類號: | G06F16/23 | 分類號: | G06F16/23;G06F9/52 |
| 代理公司: | 常州至善至誠專利代理事務所(普通合伙) 32409 | 代理人: | 王穎 |
| 地址: | 213100 江蘇省*** | 國省代碼: | 江蘇;32 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 線程 數據 更新 方法 裝置 存儲 介質 | ||
本申請公開了一種線程間的數據更新方法、裝置和存儲介質,涉及計算機技術領域,所述方法包括:接收數據更新指令,所述數據更新指令為目標線程請求更新目標內存地址中的數據的CAS操作指令,所述目標內存地址供至少兩個線程共享;在所述目標內存地址中的數據與預期原值相同時,檢測所述目標內存地址中的數據的版本號是否為0;若所述目標內存地址中的數據的版本號為0,則所述目標線程對所述數據以及所述數據的版本號進行更新。解決了現有技術中可能存在的ABA問題,達到了可以通過設置的版本號來區分數據中間是否被修改進而避免ABA問題的效果。
技術領域
本發明涉及線程間的數據更新方法、裝置和存儲介質,屬于計算機技術領域。
背景技術
在高并發場景下為保證線程安全需要對訪問的資源加鎖。CAS(Compare AndSwap,比較再交換)是java樂觀鎖的一種實現。CAS操作包含三個操作數——內存位置(V)、預期原值(A)和新值(B)。如果內存地址里面的值和A的值是相同,則將內存里面的值更新成B,也即先進行比較再進行交換。
CAS容易造成ABA問題。ABA問題是指:一個線程將某一內存地址中的數值A改成了B,接著又改成了A,進行CAS操作時認為A是沒有變化,然而其實已經變化過。
發明內容
本發明的目的在于提供一種線程間的數據更新方法、裝置和存儲介質,用于解決現有技術中存在的問題。
為達到上述目的,本發明提供如下技術方案:
根據第一方面,本發明實施例提供了一種線程間的數據更新方法,所述方法包括:
接收數據更新指令,所述數據更新指令為目標線程請求更新目標內存地址中的數據的CAS操作指令,所述目標內存地址供至少兩個線程共享;
在所述目標內存地址中的數據與預期原值相同時,檢測所述目標內存地址中的數據的版本號是否為0;
若所述目標內存地址中的數據的版本號為0,則所述目標線程對所述數據以及所述數據的版本號進行更新。
可選的,所述方法還包括:
將更新后的版本號、更新后的數據以及所述目標線程的線程標識關聯存儲。
可選的,所述目標線程對所述數據以及所述數據的版本號進行更新,包括:
所述目標線程根據所述CAS操作指令對所述數據進行更新;
在所述數據更新成功之后,對所述數據的版本號進行更新。
可選的,所述對所述數據的版本號進行更新,包括:
更新修改前的數據的版本號以及修改后的數據的版本號。
可選的,所述更新修改前的數據的版本號,包括:
將修改前的所述數據的版本號更新為1。
可選的,所述更新修改后的數據的版本號,包括:
將修改后的所述數據的版本號更新為0。
可選的,所述方法還包括:
若所述目標內存地址中的所述數據的版本號不為0,則對所述目標內存地址中的數據更新失敗。第二方面,提供了一種線程間的數據更新裝置,所述裝置包括:
接收模塊,用于接接收數據更新指令,所述數據更新指令為目標線程請求更新目標內存地址中的數據的CAS操作指令,所述目標內存地址供至少兩個線程共享;
檢測模塊,用于在所述目標內存地址中的數據與預期原值相同時,檢測所述目標內存地址中的數據的版本號是否為0;
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于常州微億智造科技有限公司,未經常州微億智造科技有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202110011353.1/2.html,轉載請聲明來源鉆瓜專利網。
- 數據顯示系統、數據中繼設備、數據中繼方法、數據系統、接收設備和數據讀取方法
- 數據記錄方法、數據記錄裝置、數據記錄媒體、數據重播方法和數據重播裝置
- 數據發送方法、數據發送系統、數據發送裝置以及數據結構
- 數據顯示系統、數據中繼設備、數據中繼方法及數據系統
- 數據嵌入裝置、數據嵌入方法、數據提取裝置及數據提取方法
- 數據管理裝置、數據編輯裝置、數據閱覽裝置、數據管理方法、數據編輯方法以及數據閱覽方法
- 數據發送和數據接收設備、數據發送和數據接收方法
- 數據發送裝置、數據接收裝置、數據收發系統、數據發送方法、數據接收方法和數據收發方法
- 數據發送方法、數據再現方法、數據發送裝置及數據再現裝置
- 數據發送方法、數據再現方法、數據發送裝置及數據再現裝置





