[發(fā)明專利]一種進(jìn)程間通信的方法及相關(guān)裝置有效
| 申請?zhí)枺?/td> | 201811209060.9 | 申請日: | 2018-10-17 |
| 公開(公告)號: | CN109358974B | 公開(公告)日: | 2021-05-28 |
| 發(fā)明(設(shè)計)人: | 付得龍 | 申請(專利權(quán))人: | 武漢斗魚網(wǎng)絡(luò)科技有限公司 |
| 主分類號: | G06F9/54 | 分類號: | G06F9/54;G06F16/176 |
| 代理公司: | 北京眾達(dá)德權(quán)知識產(chǎn)權(quán)代理有限公司 11570 | 代理人: | 徐松 |
| 地址: | 430000 湖北省武漢市東湖開*** | 國省代碼: | 湖北;42 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 進(jìn)程 通信 方法 相關(guān) 裝置 | ||
本發(fā)明實施例公開了一種進(jìn)程間通信的方法以及相關(guān)裝置,用于解決現(xiàn)有技術(shù)中父子進(jìn)程通信內(nèi)容不可靠的問題。本發(fā)明實施例方法包括:在施壓機(jī)中創(chuàng)建共享文件,所述共享文件用于多個進(jìn)程間信息的共享,所述多個進(jìn)程包括一個守護(hù)進(jìn)程和多個施壓子進(jìn)程;獲得所述共享文件對應(yīng)的文件管道,并根據(jù)所述文件管道獲得共享內(nèi)存,所述共享內(nèi)存為與所述共享文件對應(yīng)的可讀內(nèi)存;當(dāng)所述施壓子進(jìn)程產(chǎn)生消息時,對所述消息進(jìn)行序列化處理,以在所述共享文件中組成完整的消息;將所述消息寫入所述共享文件中,并更新所述共享內(nèi)存的寫索引字段,以通過所述共享內(nèi)存將所述消息從施壓子進(jìn)程發(fā)送給所述守護(hù)進(jìn)程。
技術(shù)領(lǐng)域
本發(fā)明涉及性能測試領(lǐng)域,尤其涉及一種進(jìn)程間通信的方法及相關(guān)裝置。
背景技術(shù)
性能測試平臺施壓機(jī)壓測是多進(jìn)程多線程模型,一個施壓機(jī)上存在多個施壓進(jìn)程,施壓進(jìn)程拉起后需要綁定傳輸控制協(xié)議(transmission control protocol,TCP)的服務(wù)server端的端口號,通過施壓進(jìn)程和施壓機(jī)守護(hù)進(jìn)程單項的進(jìn)程間通信傳給施壓機(jī)守護(hù)進(jìn)程,進(jìn)而傳給控制console端。
現(xiàn)有技術(shù)中,基于開源壓測平臺NGrinder,采用java輸入輸出流作為守護(hù)進(jìn)程和施壓進(jìn)程,即通過父進(jìn)程輸入流和施壓子進(jìn)程輸出流建立通信通道。然而,現(xiàn)有技術(shù)中,基于NGrinder采用java輸入輸出流作為守護(hù)進(jìn)程和施壓進(jìn)程間通信方案雖然簡單,但是開發(fā)人員容易誤用輸入輸出流,會導(dǎo)致父子進(jìn)程通信內(nèi)容并不可靠。
發(fā)明內(nèi)容
本發(fā)明實施例提供了一種進(jìn)程間通信的方法以及相關(guān)裝置,用于解決現(xiàn)有技術(shù)中父子進(jìn)程通信內(nèi)容不可靠的問題。
本發(fā)明實施例的第一方面提供了一種進(jìn)程間通信的方法,包括:在施壓機(jī)中創(chuàng)建共享文件,所述共享文件用于多個進(jìn)程間信息的共享,所述多個進(jìn)程包括一個守護(hù)進(jìn)程和多個施壓子進(jìn)程;獲得所述共享文件對應(yīng)的文件管道,并根據(jù)所述文件管道獲得共享內(nèi)存,所述共享內(nèi)存為與所述共享文件對應(yīng)的可讀內(nèi)存;當(dāng)所述施壓子進(jìn)程產(chǎn)生消息時,對所述消息進(jìn)行序列化處理,以在所述共享文件中組成完整的消息;將所述消息寫入所述共享文件中,并更新所述共享內(nèi)存的寫索引字段,以通過所述共享內(nèi)存將所述消息從施壓子進(jìn)程發(fā)送給所述守護(hù)進(jìn)程。
在一種可能的實施例中,所述獲得所述共享文件對應(yīng)的文件管道,并根據(jù)所述文件管道獲得共享內(nèi)存包括:
通過函數(shù)randomAccessFile.getChannel()獲得所述共享文件對應(yīng)的文件管道,所述randomAccessFile為用于支持讀寫隨機(jī)存取文件的類;將所述文件管道作為函數(shù)MappedByteBufferWrap()的輸入,以獲得所述共享內(nèi)存。
在一種可能的實施例中,所述對所述消息進(jìn)行序列化處理,以在所述共享文件中組成完整的消息包括:通過函數(shù)jdkSerializable()實現(xiàn)所述消息的序列化;通過函數(shù)putInt()獲得所述消息的長度,并根據(jù)put()函數(shù)在所述共享文件中組成完整的消息。
在一種可能的實施例中,所述方法還包括:通過函數(shù)trylock()獲取所述共享文件的文件鎖,所述文件鎖用于避免所述一個守護(hù)進(jìn)程和多個施壓子進(jìn)程之間的資源沖突。
在一種可能的實施例中,所述將所述消息寫入所述共享文件中,并更新所述共享內(nèi)存的寫索引字段包括:通過函數(shù)mMappedByteBuffer.position()和mMappedByteBuffer.put()將所述消息寫入所述共享文件中;將所述共享內(nèi)存的寫索引字段和所述消息的長度的和作為函數(shù)setWriteIndex()的輸入,以更新所述共享內(nèi)存的寫索引字段。
在一種可能的實施例中,所述方法還包括:當(dāng)所述守護(hù)進(jìn)程讀取所述消息時,對所述共享文件進(jìn)行壓縮并過濾掉所述守護(hù)進(jìn)程讀取的字節(jié)。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于武漢斗魚網(wǎng)絡(luò)科技有限公司,未經(jīng)武漢斗魚網(wǎng)絡(luò)科技有限公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201811209060.9/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 通信裝置、通信系統(tǒng)、通信方法、通信程序、通信電路
- 通信設(shè)備、通信系統(tǒng)、通信方法、通信程序、通信電路
- 通信設(shè)備、通信系統(tǒng)、通信方法、通信程序、通信電路
- 通信設(shè)備、通信系統(tǒng)、通信方法、通信程序、通信電路
- 通信設(shè)備、通信方法、通信電路、通信系統(tǒng)
- 通信設(shè)備、通信系統(tǒng)、通信方法、通信程序、通信電路
- 通信終端、通信系統(tǒng)、通信方法以及通信程序
- 通信終端、通信方法、通信裝備和通信系統(tǒng)
- 通信裝置、通信程序、通信方法以及通信系統(tǒng)
- 通信裝置、通信系統(tǒng)、通信方法及計算機(jī)可讀取的記錄介質(zhì)





