[發(fā)明專利]用于進程間傳輸消息的方法和裝置有效
| 申請?zhí)枺?/td> | 201610640978.3 | 申請日: | 2016-08-08 |
| 公開(公告)號: | CN107704325B | 公開(公告)日: | 2021-08-27 |
| 發(fā)明(設計)人: | 馮靖超;夏黎明;王全;曲寧;王海峰;陳卓 | 申請(專利權)人: | 北京百度網訊科技有限公司 |
| 主分類號: | G06F9/54 | 分類號: | G06F9/54 |
| 代理公司: | 北京英賽嘉華知識產權代理有限責任公司 11204 | 代理人: | 王達佐;馬曉亞 |
| 地址: | 100085 北京市*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 用于 進程 傳輸 消息 方法 裝置 | ||
本申請公開了用于進程間傳輸消息的方法和裝置。所述方法的一具體實施方式包括:根據待傳輸消息的大小,將操作系統分配的共享內存劃分為多個內存塊;在所述多個內存塊中,確定一個當前未被寫入的內存塊作為待寫入內存塊;監(jiān)測所述待寫入內存塊當前是否被讀取;響應于所述待寫入內存塊當前被讀取,對所述待寫入內存塊執(zhí)行加鎖操作;響應于所述待寫入內存塊被讀取結束,對所述待寫入內存塊執(zhí)行解鎖操作,并向所述待寫入內存塊中寫入所述待傳輸消息。該實施方式有效地控制了向共享內存中寫入消息的速度,以避免發(fā)送進程發(fā)送消息的速度過快,使得接收進程不能實時地接收發(fā)送進程發(fā)送的消息,保證了消息處理的同步性,從而提高了消息傳輸的可靠性。
技術領域
本申請涉及計算機技術領域,具體涉及計算機應用技術領域,尤其涉及一種用于進程間傳輸消息的方法和裝置。
背景技術
進程間數據交互需要通過消息隊列、共享內存、管道等方式,在使用消息隊列或管道時,發(fā)送消息的進程根據自身的發(fā)送頻率將消息寫入消息隊列中,接收消息的進程從消息隊列中獲取消息。這種方法存在的弊端為當接收消息的進程的處理頻率小于發(fā)送消息的進程的發(fā)送頻率且消息隊列滿時,發(fā)送消息的進程繼續(xù)向消息隊列中寫入消息會造成消息隊列的溢出,即一部分還未被接收消息的進程接收的消息會被刪除,造成消息的丟失。
通常使用的基于共享內存的進程間通信的方法,不能保證發(fā)送消息的進程與接收消息的進程之間的同步性,使得消息傳輸的可靠性較差。
發(fā)明內容
本申請的目的在于提出一種用于進程間傳輸消息的方法和裝置,來解決以上背景技術部分提到的技術問題。
第一方面,本申請?zhí)峁┝艘环N用于進程間傳輸消息的方法,所述方法包括:根據待傳輸消息的大小,將操作系統分配的共享內存劃分為多個內存塊;在所述多個內存塊中,確定一個當前未被寫入的內存塊作為待寫入內存塊;監(jiān)測所述待寫入內存塊當前是否被讀取;響應于所述待寫入內存塊當前被讀取,對所述待寫入內存塊執(zhí)行加鎖操作;響應于所述待寫入內存塊被讀取結束,對所述待寫入內存塊執(zhí)行解鎖操作,并向所述待寫入內存塊中寫入所述待傳輸消息。
在一些實施例中,所述確定一個當前未被寫入的內存塊作為待寫入內存塊,包括:為所述多個內存塊設置連續(xù)的序號;將預存在所述共享內存中的寫入數量值遞增;確定遞增后的所述寫入數量值對應的第一內存塊的序號,所述寫入數量值與所述多個內存塊一一對應;監(jiān)測所述第一內存塊當前是否被寫入;響應于所述第一內存塊當前未被寫入,將所述第一內存塊作為所述待寫入內存塊。
在一些實施例中,所述確定遞增后的所述寫入數量值對應的第一內存塊的序號,包括:確定所述多個內存塊的數量;將所述遞增后的寫入數量值對所述多個內存塊的數量求余;將求余值作為所述第一內存塊的序號。
在一些實施例中,所述方法還包括:響應于所述第一內存塊當前被寫入,按照所述多個內存塊的序號順序,查詢其它內存塊當前是否被寫入;響應于查詢到其它內存塊當前未被寫入,將當前未被寫入的內存塊作為所述待寫入內存塊。
在一些實施例中,所述方法還包括:響應于查詢到其它內存塊當前均被寫入,則按照所述多個內存塊的序號循環(huán)查詢,直至查詢到一個內存塊當前未被寫入,將當前未被寫入的內存塊作為所述待寫入內存塊。
在一些實施例中,所述監(jiān)測所述待寫入內存塊當前是否被讀取,包括:監(jiān)測預存在所述待寫入內存塊中的讀取數量值是否等于預設值;當所述讀取數量值等于所述預設值時,確定所述待寫入內存塊當前未被讀取;當所述讀取數量值不等于所述預設值時,確定所述待寫入內存塊當前被讀取。
在一些實施例中,所述方法還包括:向所述待寫入內存塊中寫入所述待傳輸消息時,將預存在所述待寫入內存塊中的寫入標識設置為真值,所述真值對應所述待寫入內存塊當前被寫入;響應于向所述待寫入內存塊中寫入所述待傳輸消息完成,將所述寫入標識設置為假值,所述假值對應所述待寫入內存塊當前未被寫入。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于北京百度網訊科技有限公司,未經北京百度網訊科技有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業(yè)授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201610640978.3/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:一種面向多核確定性的基于硬件的內存隔離方法
- 下一篇:吊燈(C016)





