[發明專利]一種共享內存訪問方法、裝置、計算機設備和存儲介質有效
| 申請號: | 202010627537.6 | 申請日: | 2020-07-02 |
| 公開(公告)號: | CN111796948B | 公開(公告)日: | 2021-11-26 |
| 發明(設計)人: | 全紹軍 | 申請(專利權)人: | 長視科技股份有限公司 |
| 主分類號: | G06F9/54 | 分類號: | G06F9/54 |
| 代理公司: | 廣州華進聯合專利商標代理有限公司 44224 | 代理人: | 馮右明 |
| 地址: | 510000 廣東省廣州市廣*** | 國省代碼: | 廣東;44 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 共享 內存 訪問 方法 裝置 計算機 設備 存儲 介質 | ||
1.一種共享內存訪問方法,其特征在于,所述方法包括:
接收針對共享內存的進程訪問請求;所述共享內存為包含設定數量字節單元的環形緩沖區;
獲取所述進程訪問請求對應的進程類型;所述進程類型包括寫進程和讀進程;所述寫進程中攜帶有待寫入的數據;
若為寫進程,且確定所述共享內存的當前訪問進程中不存在其他寫進程,向所述共享內存寫入所述待寫入的數據,并針對當前寫入的數據幀添加狀態標識和序列碼標識;所述狀態標識用于指示寫入的數據幀的狀態;所述序列碼標識用于指示所述寫入的數據幀被寫入所述共享內存的序列號;
若為讀進程,且確定所述共享內存的當前訪問進程中還存在寫進程,則向所述寫進程發送消息;所述消息用于觸發所述寫進程返回所述寫進程正在寫的最新的數據幀的位置;
根據所述寫進程正在寫的最新的數據幀的位置,控制所述讀進程訪問所述最新的數據幀,并從所述最新的數據幀開始依次讀取所述環形緩沖區中的數據幀。
2.根據權利要求1所述的方法,其特征在于,
所述共享內存為包含設定數量字節單元的環形緩沖區;
所述狀態標識中包括所述環形緩沖區的終點標識,用于指示寫入的數據幀在所述環形緩沖區的終點。
3.根據權利要求1所述的方法,其特征在于,所述方法還包括:
所述狀態標識還包括暫停標識,用于標記對應的數據幀為寫進程異常退出的位置;
所述向所述共享內存寫入所述待寫入的數據的過程中,還包括:
若檢測到所述寫進程異常退出,針對所述寫進程當前寫入的數據幀中添加所述暫停標識。
4.根據權利要求1所述的方法,其特征在于,所述從所述最新的數據幀開始依次讀取所述環形緩沖區中的數據幀的步驟包括:
讀取當前數據幀的狀態標識,若所述狀態標識為正常標識,則繼續讀取所述當前數據幀的序列碼標識;所述正常標識用于表示所述當前數據幀所處的位置為包含有效數據信息的非終點位置;
獲取所述當前數據幀的序列碼標識與已讀取的上一個數據幀的序列碼標識的差值,若為1,則讀取當前數據幀的數據信息。
5.根據權利要求4所述的方法,其特征在于,所述獲取所述當前數據幀的序列碼標識與已讀取的上一個數據幀的序列碼標識的差值之后,還包括:
若所述差值小于1,則周期性讀取當前數據幀,直至所述差值等于1;
若設定的讀取次數后仍然未讀取到所述差值為1的數據幀,則發送消息給所述寫進程,所述消息用于指示寫進程返回所述寫進程最新寫入的數據幀的位置給所述讀進程;
根據所述寫進程最新寫入的數據幀的位置,控制所述讀進程訪問所述最新寫入的數據幀,并從所述最新寫入的數據幀開始依次讀取所述環形緩沖區中的數據幀。
6.根據權利要求5所述的方法,其特征在于,還包括:
通過所述寫進程針對所述當前寫入的數據幀添加有效性校驗碼,所述有效性校驗碼用于指示所述當前寫入的數據幀的有效性;
所述從所述最新的數據幀開始依次讀取所述環形緩沖區中的數據幀的步驟包括:
讀取當前數據幀的有效性校驗碼,根據所述有效性校驗碼判斷所述當前數據幀的有效性,若無效,則舍棄所述當前數據幀,并讀取下一數據幀。
7.根據權利要求1至6任一項所述的方法,其特征在于,所述方法還包括:
若為寫進程,且確定所述共享內存的當前訪問進程中已存在其他寫進程,則拒絕所述寫進程的所述進程訪問請求。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于長視科技股份有限公司,未經長視科技股份有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202010627537.6/1.html,轉載請聲明來源鉆瓜專利網。





