你不一定知道的七種進(jìn)程間通信方式

一、前言

每個(gè)進(jìn)程各自有不同的用戶地址空間,任何一個(gè)進(jìn)程的全局變量在另一個(gè)進(jìn)程中都看不到,所以進(jìn)程之間要交換數(shù)據(jù)必須通過(guò)內(nèi)核,在內(nèi)核中開辟一塊緩沖區(qū),進(jìn)程A把數(shù)據(jù)從用戶空間拷貝到內(nèi)核緩沖區(qū),進(jìn)程B再?gòu)膬?nèi)核緩沖區(qū)把數(shù)據(jù)讀走,內(nèi)核提供的這種機(jī)制稱為進(jìn)程間通信。

二、管道

管道是一種半雙工的通信方式。

        1.匿名管道

            只能在有聯(lián)系的進(jìn)程間進(jìn)行通信(比如父子)

        2.命名管道

             可以在無(wú)聯(lián)系的進(jìn)程間進(jìn)行通信
1.jpg
2.jpg

管道.rar: https://url18.ctfile.com/f/7715018-957899148-39e00e?p=6511 (訪問(wèn)密碼: 6511)

三、socket

Socket不僅可以跨網(wǎng)絡(luò)和不同主機(jī)進(jìn)行進(jìn)程間通信,還可以在同一主機(jī)進(jìn)行進(jìn)程間通信。

3.jpg

套接字.rar: https://url18.ctfile.com/f/7715018-957902811-f5161d?p=6511 (訪問(wèn)密碼: 6511)

四、共享內(nèi)存

共享內(nèi)存就是映射一段能被其它進(jìn)程所訪問(wèn)的內(nèi)存,這段共享內(nèi)存由一個(gè)進(jìn)程創(chuàng)建,但多個(gè)進(jìn)程都可以訪問(wèn)。

4.jpg

共享內(nèi)存.rar: https://url18.ctfile.com/f/7715018-957899142-5b577c?p=6511 (訪問(wèn)密碼: 6511)

五、信號(hào)量

信號(hào)量是一個(gè)計(jì)數(shù)器,可以用來(lái)控制多個(gè)進(jìn)程對(duì)共享資源的訪問(wèn)。它常作為一種鎖機(jī)制,防止某進(jìn)程正在訪問(wèn)共享資源時(shí),其他進(jìn)程也訪問(wèn)該資源。因此,主要作為進(jìn)程間以及同一進(jìn)程內(nèi)不同線程之間的同步手段。

5.jpg

信號(hào)量.rar: https://url18.ctfile.com/f/7715018-957899160-e52314?p=6511 (訪問(wèn)密碼: 6511)

六、文件映射

將文件映射到進(jìn)程指定內(nèi)存,對(duì)內(nèi)存的操作,就是對(duì)文件的操作,從而避免頻繁的對(duì)文件進(jìn)行讀寫的操作,并且操作效率比文件讀寫效率高很多,也能通過(guò)文件映射進(jìn)行進(jìn)程通信。

6.jpg

文件映射.rar: https://url18.ctfile.com/f/7715018-957965340-e701ae?p=6511 (訪問(wèn)密碼: 6511)

七、消息隊(duì)列

消息隊(duì)列是由消息的鏈表,存放在內(nèi)核中并由消息隊(duì)列標(biāo)識(shí)符標(biāo)識(shí)。消息隊(duì)列克服了信號(hào)量傳遞信息少、管道只能承載無(wú)格式字節(jié)流以及緩沖區(qū)大小受限等缺點(diǎn)。

1.CreateFile()創(chuàng)建發(fā)送接收消息隊(duì)列

7.jpg

2.CreateMutex() 或 CreateSemaphore() 實(shí)現(xiàn)


8.jpg

3.通過(guò)窗口傳遞消息

9.jpg

消息隊(duì)列.rar: https://url18.ctfile.com/f/7715018-958480335-0570bc?p=6511 (訪問(wèn)密碼: 6511)

八、油槽

油槽不支持廣播通信,其是一種單向數(shù)據(jù)傳輸?shù)姆?wù),即服務(wù)器接收,客戶端發(fā)送的進(jìn)程間通信的方式,和socket有點(diǎn)類似。

10.jpg

油槽.rar: https://url18.ctfile.com/f/7715018-958480338-1cb49c?p=6511 (訪問(wèn)密碼: 6511)

九、結(jié)語(yǔ)
有什么不懂得可以問(wèn)小編,反正小編也不會(huì)解答。更多win32api精彩文章持續(xù)輸出,大家拭目以待,希望大家多多支持。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容