[發明專利]進程間通信IPC的實現方法和裝置有效
| 申請號: | 201810646525.0 | 申請日: | 2018-06-21 |
| 公開(公告)號: | CN108984317B | 公開(公告)日: | 2021-07-13 |
| 發明(設計)人: | 趙肖勇;康高杰 | 申請(專利權)人: | 北京奇虎科技有限公司 |
| 主分類號: | G06F9/54 | 分類號: | G06F9/54 |
| 代理公司: | 北京恒博知識產權代理有限公司 11528 | 代理人: | 范勝祥 |
| 地址: | 100088 北京市西城區新*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 進程 通信 ipc 實現 方法 裝置 | ||
1.一種進程間通信IPC的實現方法,包括:
在用于進程間通信的共享內存中注冊與自身對應的IPC對象;
獲取待傳遞參數的參數類型;
根據所述參數類型,從預設的數據封裝模板中選取出匹配的數據封裝模板;
將待傳遞參數按匹配的數據封裝模板封裝為對指定類型的數據對象;
將所述指定類型的數據對象按預設方法序列化為二進制數據,將所述二進制數據作為待發送的消息;
將消息發送給與通信目標對應的IPC對象,和/或通過與自身對應的IPC對象接收通信目標發送的消息。
2.如權利要求1所述的方法,其中,所述在用于進程間通信的共享內存中注冊與自身對應的IPC對象包括:
獲取與自身對應的IPC對象的唯一標識;
根據所述唯一標識和自身預設的回調函數,注冊與自身對應的IPC對象。
3.如權利要求2所述的方法,其中,所述獲取與自身對應的IPC對象的唯一標識包括:
根據自身所屬進程的類型,獲取隨機分配的唯一標識,或者獲取預留的唯一標識。
4.如權利要求1所述的方法,其中,所述在用于進程間通信的共享內存中注冊與自身對應的IPC對象包括:
判斷是否已存在用于進程間通信的共享內存;
是則使用該用于進程間通信的共享內存,否則申請用于進程間通信的共享內存。
5.如權利要求4所述的方法,其中,所述申請用于進程間通信的共享內存包括:
使用伙伴算法管理所述共享內存;
在所述共享內存中設置頭部區域,以存放所述伙伴算法的頭部信息和各IPC對象的共用信息。
6.如權利要求5所述的方法,其中,所述在用于進程間通信的共享內存中注冊與自身對應的IPC對象包括:
判斷所述共享內存中是否存在與該IPC對象對應的預留空間,是則將所述IPC對象的注冊信息寫入所述預留空間,否則在所述共享內存中為該IPC對象新分配空間。
7.如權利要求6所述的方法,其中,所述將消息發送給與通信目標對應的IPC對象包括:
判斷通信目標對應的IPC對象是否已在所述共享內存中注冊;
是則將所述消息寫入通信目標對應的IPC對象的消息隊列;否則判斷所述共享內存中是否存在與通信目標對應的IPC對象對應的預留空間,是則將所述消息寫入與該預留空間對應的消息隊列,否則在所述共享內存中為所述通信目標對應的IPC對象申請預留空間,將所述消息寫入與該預留空間對應的消息隊列。
8.如權利要求7所述的方法,其中,該方法還包括:為發送的消息設置存活時間;
若發送的消息未在存活時間內被通信目標獲取,則從相應的消息隊列中刪除該發送的消息。
9.如權利要求1所述的方法,其中,所述預設方法是利用包含嵌套模板的可變參數模板實現的。
10.如權利要求1所述的方法,其中,所述根據所述參數類型,從預設的數據封裝模板中選取出匹配的數據封裝模板包括:
利用類型萃取確定待傳遞參數中各參數的參數類型;
所述將待傳遞參數按匹配的數據封裝模板封裝為對指定類型的數據對象包括:
若參數類型為標量類型,則直接封裝參數的值;若參數類型為結構體,則建立對參數的引用,對所述引用進行封裝。
11.如權利要求1所述的方法,其中,所述參數類型包括如下的一種或多種:
基本類型、自定義類、智能指針、vector、map。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于北京奇虎科技有限公司,未經北京奇虎科技有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201810646525.0/1.html,轉載請聲明來源鉆瓜專利網。





