[發明專利]一種進程間通信的方法及相關裝置有效
| 申請號: | 201811209060.9 | 申請日: | 2018-10-17 |
| 公開(公告)號: | CN109358974B | 公開(公告)日: | 2021-05-28 |
| 發明(設計)人: | 付得龍 | 申請(專利權)人: | 武漢斗魚網絡科技有限公司 |
| 主分類號: | G06F9/54 | 分類號: | G06F9/54;G06F16/176 |
| 代理公司: | 北京眾達德權知識產權代理有限公司 11570 | 代理人: | 徐松 |
| 地址: | 430000 湖北省武漢市東湖開*** | 國省代碼: | 湖北;42 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 進程 通信 方法 相關 裝置 | ||
1.一種進程間通信的方法,其特征在于,包括:
在施壓機中創建共享文件,所述共享文件用于多個進程間信息的共享,所述多個進程包括一個守護進程和多個施壓子進程;
獲得所述共享文件對應的文件管道,并根據所述文件管道獲得共享內存,所述共享內存為與所述共享文件對應的可讀內存;
當所述施壓子進程產生第一消息時,對所述第一消息進行序列化處理,獲得第二消息,以在所述共享文件中組成完整的消息;其中,所述第二消息為序列化處理后的消息;
將所述第二消息寫入所述共享文件中,并更新所述共享內存的寫索引字段,以通過所述共享內存將所述第一消息從施壓子進程發送給所述守護進程;
其中,每個進程對應一個所述共享內存,各所述共享內存之間相互隔離,所述共享文件對應多個所述共享內存,且所述共享文件與多個所述共享內存之間存在映射關系;
其中,所述獲得所述共享文件對應的文件管道,并根據所述文件管道獲得共享內存包括:
通過函數randomAccessFile.getChannel()獲得所述共享文件對應的文件管道,所述randomAccessFile為用于支持讀寫隨機存取文件的類;
將所述文件管道作為函數MappedByteBufferWrap()的輸入,以獲得所述共享內存;
其中,所述對所述第一消息進行序列化處理,以在所述共享文件中組成完整的消息包括:
通過函數jdkSerializable()實現所述第一消息的序列化;
通過函數putInt()獲得所述第二消息的長度,并根據put()函數在所述共享文件中組成完整的消息。
2.根據權利要求1所述的方法,其特征在于,所述方法還包括:
通過函數trylock()獲取所述共享文件的文件鎖,所述文件鎖用于避免所述一個守護進程和多個施壓子進程之間的資源沖突。
3.根據權利要求1所述的方法,其特征在于,所述將所述第二消息寫入所述共享文件中,并更新所述共享內存的寫索引字段包括:
通過函數mMappedByteBuffer.position()和mMappedByteBuffer.put()將所述第二消息寫入所述共享文件中;
將所述共享內存的寫索引字段和所述第二消息的長度的和作為函數setWriteIndex()的輸入,以更新所述共享內存的寫索引字段。
4.根據權利要求1所述的方法,其特征在于,所述方法還包括:
當所述守護進程讀取所述第二消息時,對所述共享文件進行壓縮并過濾掉所述守護進程讀取的字節。
5.根據權利要求4所述的方法,其特征在于,所述對所述共享文件進行壓縮并過濾掉所述守護進程讀取的字節包括:
通過函數compact()對所述共享文件進行壓縮;
將所述共享內存的寫索引字段和目標數組的長度的差作為函數setWriteIndex()的輸入,以過濾所述讀取的字節,所述目標數組用于所述守護進程讀取所述第二消息。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于武漢斗魚網絡科技有限公司,未經武漢斗魚網絡科技有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201811209060.9/1.html,轉載請聲明來源鉆瓜專利網。





