[發明專利]用于進程間傳輸消息的方法和裝置有效
| 申請號: | 201610640978.3 | 申請日: | 2016-08-08 |
| 公開(公告)號: | CN107704325B | 公開(公告)日: | 2021-08-27 |
| 發明(設計)人: | 馮靖超;夏黎明;王全;曲寧;王海峰;陳卓 | 申請(專利權)人: | 北京百度網訊科技有限公司 |
| 主分類號: | G06F9/54 | 分類號: | G06F9/54 |
| 代理公司: | 北京英賽嘉華知識產權代理有限責任公司 11204 | 代理人: | 王達佐;馬曉亞 |
| 地址: | 100085 北京市*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 用于 進程 傳輸 消息 方法 裝置 | ||
1.一種用于進程間傳輸消息的方法,其特征在于,所述方法包括:
根據待傳輸消息的大小,將操作系統分配的共享內存劃分為多個內存塊,內存塊的大小大于所述待傳輸消息的大小;
在所述多個內存塊中,確定一個當前未被寫入的內存塊作為待寫入內存塊;
監測所述待寫入內存塊當前是否被讀取;
響應于所述待寫入內存塊當前被讀取,對所述待寫入內存塊執行加鎖操作;
響應于所述待寫入內存塊被讀取結束,對所述待寫入內存塊執行解鎖操作,并向所述待寫入內存塊中寫入所述待傳輸消息。
2.根據權利要求1所述的方法,其特征在于,所述確定一個當前未被寫入的內存塊作為待寫入內存塊,包括:
為所述多個內存塊設置連續的序號;
將預存在所述共享內存中的寫入數量值遞增;
確定遞增后的所述寫入數量值對應的第一內存塊的序號,所述寫入數量值與所述多個內存塊一一對應;
監測所述第一內存塊當前是否被寫入;
響應于所述第一內存塊當前未被寫入,將所述第一內存塊作為所述待寫入內存塊。
3.根據權利要求2所述的方法,其特征在于,所述確定遞增后的所述寫入數量值對應的第一內存塊的序號,包括:
確定所述多個內存塊的數量;
將所述遞增后的寫入數量值對所述多個內存塊的數量求余;
將求余值作為所述第一內存塊的序號。
4.根據權利要求2所述的方法,其特征在于,所述方法還包括:
響應于所述第一內存塊當前被寫入,按照所述多個內存塊的序號順序,查詢其它內存塊當前是否被寫入;
響應于查詢到其它內存塊當前未被寫入,將當前未被寫入的內存塊作為所述待寫入內存塊。
5.根據權利要求4所述的方法,其特征在于,所述方法還包括:
響應于查詢到其它內存塊當前均被寫入,則按照所述多個內存塊的序號循環查詢,直至查詢到一個內存塊當前未被寫入,將當前未被寫入的內存塊作為所述待寫入內存塊。
6.根據權利要求1-5任一項所述的方法,其特征在于,所述監測所述待寫入內存塊當前是否被讀取,包括:
監測預存在所述待寫入內存塊中的讀取數量值是否等于預設值;
當所述讀取數量值等于所述預設值時,確定所述待寫入內存塊當前未被讀取;
當所述讀取數量值不等于所述預設值時,確定所述待寫入內存塊當前被讀取。
7.根據權利要求1所述的方法,其特征在于,所述方法還包括:
向所述待寫入內存塊中寫入所述待傳輸消息時,將預存在所述待寫入內存塊中的寫入標識設置為真值,所述真值對應所述待寫入內存塊當前被寫入;
響應于向所述待寫入內存塊中寫入所述待傳輸消息完成,將所述寫入標識設置為假值,所述假值對應所述待寫入內存塊當前未被寫入。
8.一種用于進程間傳輸消息的方法,其特征在于,所述方法包括:
將操作系統的共享內存的地址映射到自身的地址空間內;
從所述共享內存的多個內存塊中,確定最新寫入消息的內存塊作為待讀取內存塊;
監測所述待讀取內存塊當前是否被寫入;
響應于所述待讀取內存塊當前被寫入,進入進程等待狀態;
響應于所述待讀取內存塊被寫入結束,讀取所述待讀取內存塊中存儲的消息。
9.根據權利要求8所述的方法,其特征在于,所述確定最新寫入消息的內存塊作為待讀取內存塊,包括:
讀取所述共享內存中各內存塊的序號及預存的寫入數量值;
將所述寫入數量值與所述多個內存塊的數量求余;
將序號等于求余值的內存塊作為所述待讀取內存塊。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于北京百度網訊科技有限公司,未經北京百度網訊科技有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201610640978.3/1.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:一種面向多核確定性的基于硬件的內存隔離方法
- 下一篇:吊燈(C016)





