[發明專利]無鎖化的數據結構構建方法和寫入數據、讀取數據的方法有效
| 申請號: | 201910253786.0 | 申請日: | 2019-03-30 |
| 公開(公告)號: | CN110134439B | 公開(公告)日: | 2021-09-28 |
| 發明(設計)人: | 劉靖非 | 申請(專利權)人: | 北京百卓網絡技術有限公司 |
| 主分類號: | G06F9/38 | 分類號: | G06F9/38 |
| 代理公司: | 北京集智東方知識產權代理有限公司 11578 | 代理人: | 陳亞斌;關兆輝 |
| 地址: | 100095 *** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 無鎖化 數據結構 構建 方法 寫入 數據 讀取 | ||
本申請提供一種無鎖化的數據結構構建方法和寫入數據、讀取數據的方法,該構建方法包括:設置數據隊列,所述數據隊列包括隊列體;將所述隊列體劃分為依序連續排列的多個隊列元素,按照隊列元素進入隊列體的時間順序采用數字序號依次記錄各隊列元素;根據位于所述隊列體頭部的隊列元素的數字序號生成向所述隊列體寫入數據的生產者的生產進度游標;根據位于所述隊列體尾部的隊列元素的數字序號生成從所述隊列體讀取數據的消費者的消費進度游標。該構建方法構建的數據隊列,數據處理速度快,有利于提升計算機性能。
技術領域
本申請涉及數據處理領域,尤其涉及一種無鎖化的數據結構構建方法和寫入數據、讀取數據的方法。
背景技術
計算機需要處理大量的數據,如何有效的實現存儲和組織數據是一個重要的問題。
為提高對數據的處理速度,可采用多線程技術對數據進行并發操作(例如,寫入數據和讀取數據等),為保證并發操作時數據的安全性和有效性,通常需要依賴于各種鎖操作,例如,在存在大量的對數據的并發讀寫訪問請求時,使用互斥鎖來保證數據的一致性。但是使用大量的鎖操作,可能會引發線程停止或者休眠,因此造成對數據訪問請求的延遲,降低數據處理速度。
因此,如何提高存在多個并發訪問請求時,對數據的處理速度是需要解決的問題。
發明內容
有鑒于此,本申請提供一種無鎖化的數據結構構建方法和寫入數據、讀取數據的方法,以提高數據的處理速度。
第一方面,本發明提供一種無鎖化的數據結構構建方法,所述方法包括:
設置數據隊列,所述數據隊列包括隊列體;
將所述隊列體劃分為依序連續排列的多個隊列元素,按照隊列元素進入隊列體的時間順序采用數字序號依次記錄各隊列元素;
根據位于所述隊列體頭部的隊列元素的數字序號生成向所述隊列體寫入數據的生產者的生產進度游標;
根據位于所述隊列體尾部的隊列元素的數字序號生成從所述隊列體讀取數據的消費者的消費進度游標。
根據權利要求1所述的方法,其特征在于,所述生產進度游標包括生產者游標序號,所述根據位于所述隊列體頭部的隊列元素的數字序號生成向所述隊列體寫入數據的生產者的生產進度游標,包括:
將確定出的位于所述隊列體頭部的隊列元素的數字序號作為生產者游標序號;
所述消費進度游標包括消費者游標序號,所述根據位于所述隊列體尾部的隊列元素的數字序號生成從所述隊列體讀取數據的消費者的消費進度游標,包括:
根將確定出的位于所述隊列體尾部的隊列元素的數字序號作為消費者游標序號。
可選的,該方法還包括:
創建隊列內存文件,所述隊列內存文件包括所述數據隊列的所述隊列體和各所述隊列元素;
創建游標內存文件,所述游標內存文件包括生產進度游標和消費進度游標。
可選的,所述數字序號采用設定位的二進制無符號整數數值表示。
可選的,所述數據隊列還包括隊列頭,所述隊列元素包括隊列元素頭和隊列元素體;
所述隊列頭包括以下字段:用于標識所述數據隊列格式的版本號、各所述隊列元素頭的長度和各所述隊列元素體的長度和所述隊列體包含隊列元素的總數量;
所述隊列元素頭包括以下字段:所述數據隊列的實際長度、表示各所述隊列元素生成時間的時間戳和各所述隊列元素的數字序號。
第二方面,本發明提供一種向數據隊列寫入數據的方法,所述數據隊列為根據上述任一方法所述的數據結構構建的方法構建的數據隊列;該向數據隊列寫入數據的方法包括:
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于北京百卓網絡技術有限公司,未經北京百卓網絡技術有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201910253786.0/2.html,轉載請聲明來源鉆瓜專利網。





