[發明專利]多線程通過數組處理數據的方法、系統及多線程處理器有效
| 申請號: | 201310703259.8 | 申請日: | 2013-12-18 |
| 公開(公告)號: | CN103713884A | 公開(公告)日: | 2014-04-09 |
| 發明(設計)人: | 余欣 | 申請(專利權)人: | 珠海金山網絡游戲科技有限公司;廣州西山居世游網絡科技有限公司 |
| 主分類號: | G06F9/38 | 分類號: | G06F9/38 |
| 代理公司: | 廣州嘉權專利商標事務所有限公司 44205 | 代理人: | 陳國榮 |
| 地址: | 519000 廣東省珠*** | 國省代碼: | 廣東;44 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 多線程 通過 數組 處理 數據 方法 系統 處理器 | ||
技術領域
本發明涉及數據處理領域,特別是一種多線程通過數組處理數據的方法、系統及多線程處理器。
背景技術
隨著CPU內核數量的不斷增加,多線程開發應用已經是不可或缺的重要軟件技術,利用多線程并發執行機制可顯著提升軟件的運行效率。當前,在多個線程之間進行數據存取和交換操作時,普遍采用的是互斥鎖的方式進行處理,一個線程在存儲數據時需要加鎖,另一個線程在讀取數據時也需要加鎖,這種方式保障了多個線程之間數據存取和交換的安全性,但也增加了軟件運行的開銷和編程難度。互斥鎖將使軟件運行進入內核模式,從而影響了軟件運行的流暢性和高效性,且互斥鎖使用不當很容易造成死鎖等困擾。因此,在實際的應用中,如何規避互斥鎖的使用,從而避免軟件進入死鎖狀態和內核模式,是當前的一個技術性難題。
發明內容
為解決上述問題,本發明的目的在于提供一種多線程通過數組處理數據的方法、系統及多線程處理器,在不使用互斥鎖的情況下,高效和安全的保障數據存取和交換過程,避免死鎖狀態和進入內核運行模式。
本發明解決其問題所采用的技術方案是:
一種多線程通過數組處理數據的方法,所述數組中的每一個元素包括數據和用于標志此元素是否存儲有數據的狀態值,且所述數組設置有存儲計數和與存儲計數對應的兩個游標,所述存儲計數用于標記數組中存儲的元素個數,所述兩個游標為存儲游標和擴展存儲游標,所述存儲游標用于指示當前數組已存儲的元素位置,所述擴展存儲游標用于指示當前數組正在存儲的元素位置,所述方法包括存儲的步驟:
(11)判斷存儲計數與數組可存儲元素個數的大小;
(12)當存儲計數小于數組可存儲元素個數時,存儲計數加1,且將擴展存儲游標加1使其移動至當前線程進行存儲的元素位置,并執行步驟(3),否則,結束存儲;
(13)將存儲后的元素的狀態值標記為已存儲;
(14)循環執行步驟(12)和步驟(13),直至所有線程存儲完相應的數據;
(15)依次檢測存儲游標至擴展存儲游標之間所有元素的狀態值,若元素的狀態值標記為已存儲,則將存儲游標加1,否則,若元素的狀態值標記為未存儲,當前線程結束檢測并返回。
所述數組還設置有讀取計數,所述讀取計數用于標記數組中可讀取的元素個數,在所述步驟(15)中,依次檢測存儲游標至擴展存儲游標之間所有元素的狀態值時,若元素的狀態值標記為已存儲,則將存儲游標的值備份后通過原子交換函數將存儲游標的值加1,同時,若原子交換函數返回的值與所述備份值相等,則將讀取計數加1,并檢測下一個元素,否則,當前線程結束檢測并返回,若元素的狀態值標記為未存儲,當前線程結束檢測并返回。
所述數組還設置有與讀取計數對應的另外兩個游標,分別為讀取游標和擴展讀取游標,所述讀取游標用于指示當前數組已讀取的元素位置,所述擴展讀取游標用于指示當前數組正在讀取的元素位置,所述方法還包括讀取的步驟:
(31)判斷讀取計數是否大于0;
(32)若讀取計數大于0時,讀取計數減1,且將擴展讀取游標加1使其移動至當前線程進行讀取的元素位置,并執行步驟(33),否則,結束讀取;
(33)將讀取后的元素的狀態值標記為未存儲;
(34)循環執行步驟(32)與步驟(33),直至所有線程讀取完相應的數據;
(35)依次檢測讀取游標至擴展讀取游標之間所有元素的狀態值,若元素的狀態值標記為未存儲,則將讀取游標的值備份后通過原子交換函數將讀取游標的值加1,同時,若原子交換函數返回的值與所述備份值相等,則將存儲計數減1,并檢測下一個元素,否則,當前線程結束檢測并返回,若元素的狀態值標記為已存儲,當前線程結束檢測并返回。
所述數組的大小為2的N次方,所述存儲游標、擴展存儲游標、讀取游標、擴展讀取游標在移動時,其游標值通過與數組大小進行取余操作指示相應元素的位置。
所述狀態值用0標記未存儲,用1標記已存儲。
一種多線程通過數組處理數據的系統,所述所述數組中的每一個元素包括數據和用于標志此元素是否存儲有數據的狀態值,且所述數組設置有存儲計數和與存儲計數對應的兩個游標,所述存儲計數用于標記數組中存儲的元素個數,所述兩個游標為存儲游標和擴展存儲游標,所述存儲游標用于指示當前數組已存儲的元素位置,所述擴展存儲游標用于指示當前數組正在存儲的元素位置,所述系統包括存儲模塊,所述存儲模塊包括:
存儲判斷單元,判斷存儲計數與數組可存儲元素個數的大小;
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于珠海金山網絡游戲科技有限公司;廣州西山居世游網絡科技有限公司,未經珠海金山網絡游戲科技有限公司;廣州西山居世游網絡科技有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201310703259.8/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:一種行星齒輪減速機
- 下一篇:銅合金在養殖海洋生物中的用途





