那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

進(jìn)程間與線程間的通信方式

Dbwd_Imgtec ? 來源:未知 ? 作者:李倩 ? 2018-04-09 15:58 ? 次閱讀

每個(gè)進(jìn)程有自己的地址空間。兩個(gè)進(jìn)程中的地址即使值相同,實(shí)際指向的位置也不同。進(jìn)程間通信一般通過操作系統(tǒng)的公共區(qū)進(jìn)行。

同一進(jìn)程中的線程因?qū)偻坏刂房臻g,可直接通信。

不僅是系統(tǒng)內(nèi)部獨(dú)立運(yùn)行的實(shí)體,而且是獨(dú)立競爭資源的實(shí)體。

線程也被稱為輕權(quán)進(jìn)程,同一進(jìn)程的線程共享全局變量和內(nèi)存,使得線程之間共享數(shù)據(jù)很容易也很方便,但會(huì)帶來某些共享數(shù)據(jù)的互斥問題。

許多程序?yàn)榱颂岣咝室捕际怯昧司€程來編寫。

父子進(jìn)程的派生是非常昂貴的,而且父子進(jìn)程的通訊需要ipc或者其他方法來實(shí)現(xiàn),比較麻煩。而線程的創(chuàng)建就花費(fèi)少得多,并且同一進(jìn)程內(nèi)的線程共享全局存儲(chǔ)區(qū),所以通訊方便。

線程的缺點(diǎn)也是由它的優(yōu)點(diǎn)造成的,主要是同步,異步和互斥的問題,值得在使用的時(shí)候小心設(shè)計(jì)。

只有進(jìn)程間需要通信,同一進(jìn)程的線程share地址空間,沒有通信的必要,但要做好同步/互斥mutex,保護(hù)共享的全局變量。線程擁有自己的棧。同步/互斥是原語primitives.

而進(jìn)程間通信無論是信號(hào),管道pipe還是共享內(nèi)存都是由操作系統(tǒng)保證的,是系統(tǒng)調(diào)用.

線程間通信:由于多線程共享地址空間和數(shù)據(jù)空間,所以多個(gè)線程間的通信是一個(gè)線程的數(shù)據(jù)可以直接提供給其他線程使用,而不必通過操作系統(tǒng)(也就是內(nèi)核的調(diào)度)。

進(jìn)程間的通信則不同,它的數(shù)據(jù)空間的獨(dú)立性決定了它的通信相對比較復(fù)雜,需要通過操作系統(tǒng)。以前進(jìn)程間的通信只能是單機(jī)版的,現(xiàn)在操作系統(tǒng)都繼承了基于套接字(socket)的進(jìn)程間的通信機(jī)制。這樣進(jìn)程間的通信就不局限于單臺(tái)計(jì)算機(jī)了,實(shí)現(xiàn)了網(wǎng)絡(luò)通信

一、進(jìn)程間的通信方式

管道( pipe ):管道是一種半雙工的通信方式,數(shù)據(jù)只能單向流動(dòng),而且只能在具有親緣關(guān)系的進(jìn)程間使用。進(jìn)程的親緣關(guān)系通常是指父子進(jìn)程關(guān)系。

有名管道 (namedpipe) : 有名管道也是半雙工的通信方式,但是它允許無親緣關(guān)系進(jìn)程間的通信。

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

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

信號(hào) (sinal ) : 信號(hào)是一種比較復(fù)雜的通信方式,用于通知接收進(jìn)程某個(gè)事件已經(jīng)發(fā)生。

共享內(nèi)存(shared memory ) :共享內(nèi)存就是映射一段能被其他進(jìn)程所訪問的內(nèi)存,這段共享內(nèi)存由一個(gè)進(jìn)程創(chuàng)建,但多個(gè)進(jìn)程都可以訪問。共享內(nèi)存是最快的 IPC 方式,它是針對其他進(jìn)程間通信方式運(yùn)行效率低而專門設(shè)計(jì)的。它往往與其他通信機(jī)制,如信號(hào)兩,配合使用,來實(shí)現(xiàn)進(jìn)程間的同步和通信。

套接字(socket ) : 套解口也是一種進(jìn)程間通信機(jī)制,與其他通信機(jī)制不同的是,它可用于不同及其間的進(jìn)程通信。

二、線程間的通信方式

鎖機(jī)制:包括互斥鎖、條件變量、讀寫鎖* 互斥鎖提供了以排他方式防止數(shù)據(jù)結(jié)構(gòu)被并發(fā)修改的方法。* 讀寫鎖允許多個(gè)線程同時(shí)讀共享數(shù)據(jù),而對寫操作是互斥的。* 條件變量可以以原子的方式阻塞進(jìn)程,直到某個(gè)特定條件為真為止。對條件的測試是在互斥鎖的保護(hù)下進(jìn)行的。條件變量始終與互斥鎖一起使用。

信號(hào)量機(jī)制(Semaphore):包括無名線程信號(hào)量和命名線程信號(hào)量

信號(hào)機(jī)制(Signal):類似進(jìn)程間的信號(hào)處理

線程間的通信目的主要是用于線程同步,所以線程沒有像進(jìn)程通信中的用于數(shù)據(jù)交換的通信機(jī)制。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 通信
    +關(guān)注

    關(guān)注

    18

    文章

    6070

    瀏覽量

    136419
  • 線程
    +關(guān)注

    關(guān)注

    0

    文章

    505

    瀏覽量

    19756

原文標(biāo)題:線程通信與進(jìn)程通信的區(qū)別

文章出處:【微信號(hào):Imgtec,微信公眾號(hào):Imagination Tech】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Linux下進(jìn)程通信方式-管道

    Linux下進(jìn)程通信方式-管道分享到: 本文關(guān)鍵字: linux 管道通信,linux 進(jìn)程
    發(fā)表于 08-29 15:29

    Linux下進(jìn)程通信

    華清遠(yuǎn)見嵌入式linux學(xué)習(xí)資料《Linux下進(jìn)程通信》,通過前面的學(xué)習(xí),讀者已經(jīng)知道了進(jìn)程是一個(gè)程序的一次執(zhí)行,是系統(tǒng)資源分配的最小單元。這里所說的
    發(fā)表于 09-04 10:07

    Linux多線程線程同步

    進(jìn)程所花費(fèi)的空間,而且,線程彼此切換所需的時(shí)間也遠(yuǎn)遠(yuǎn)小于進(jìn)程切換所需要的時(shí)間。 線程
    發(fā)表于 12-08 14:14

    進(jìn)程通信方式有哪些?

    進(jìn)程通信方式有哪些?
    發(fā)表于 12-24 06:46

    哪些方式可以實(shí)現(xiàn)Linux系統(tǒng)下的進(jìn)程通信

    哪些方式可以實(shí)現(xiàn)Linux系統(tǒng)下的進(jìn)程通信進(jìn)程線程有哪些不同之處呢?
    發(fā)表于 12-24 06:38

    c線程通信

    對于學(xué)習(xí)嵌入式Linux開發(fā)得朋友說,這篇文章幫助你更加了解線程通信
    發(fā)表于 08-09 15:12 ?3次下載

    了解Linux多線程線程同步

    進(jìn)程通信IPC,線程可以直接讀寫進(jìn)程數(shù)據(jù)段(如全局變量)來進(jìn)行
    發(fā)表于 04-23 14:23 ?742次閱讀
    了解Linux多<b class='flag-5'>線程</b>及<b class='flag-5'>線程</b><b class='flag-5'>間</b>同步

    Linux進(jìn)程通信方式——管道

    管道是Linux中進(jìn)程通信的一種方式,它把一個(gè)程序的輸出直接連接到另一個(gè)程序的輸入。Linux的管道主要包括兩種:無名管道和有名管道。
    發(fā)表于 06-01 09:13 ?1482次閱讀
    Linux<b class='flag-5'>進(jìn)程</b><b class='flag-5'>間</b><b class='flag-5'>通信</b><b class='flag-5'>方式</b>——管道

    使用MQTT作為進(jìn)程通信方式

    小編對Linux這一塊的實(shí)際開發(fā)經(jīng)驗(yàn)雖然還不是很足,但也知道進(jìn)程通信有那么幾種方式:管道、消息隊(duì)列、共享內(nèi)存、套接字等。
    的頭像 發(fā)表于 10-22 12:09 ?6255次閱讀
    使用MQTT作為<b class='flag-5'>進(jìn)程</b><b class='flag-5'>間</b><b class='flag-5'>通信</b>的<b class='flag-5'>方式</b>

    RT-Thread文檔_線程通信

    RT-Thread文檔_線程通信
    發(fā)表于 02-22 18:29 ?0次下載
    RT-Thread文檔_<b class='flag-5'>線程</b><b class='flag-5'>間</b><b class='flag-5'>通信</b>

    進(jìn)程通信的機(jī)制有哪些

    比較難,Linux內(nèi)核提供了多種進(jìn)程通信的機(jī)制。 同一個(gè)進(jìn)程的不同模塊(譬如不同的函數(shù))之間進(jìn)行通信都是很簡單的,譬如使用全局變量等。 通
    的頭像 發(fā)表于 07-21 11:23 ?993次閱讀
    <b class='flag-5'>進(jìn)程</b><b class='flag-5'>間</b><b class='flag-5'>通信</b>的機(jī)制有哪些

    常見的進(jìn)程通信方式

    進(jìn)程通信 如果兩個(gè)進(jìn)程,想要知道對方在干嘛,或者進(jìn)行協(xié)調(diào)運(yùn)行,就需要進(jìn)程
    的頭像 發(fā)表于 10-08 15:48 ?1393次閱讀
    常見的<b class='flag-5'>進(jìn)程</b><b class='flag-5'>間</b><b class='flag-5'>通信</b><b class='flag-5'>方式</b>

    進(jìn)程通信方式總結(jié)

    進(jìn)程通信(IPC): 進(jìn)程通信方式有很多,這里
    的頭像 發(fā)表于 11-09 09:25 ?813次閱讀
    <b class='flag-5'>進(jìn)程</b><b class='flag-5'>間</b><b class='flag-5'>通信</b><b class='flag-5'>方式</b>總結(jié)

    進(jìn)程通信的原理

    一.為什么進(jìn)程需要通信? 1).數(shù)據(jù)傳輸 一個(gè)進(jìn)程需要將它的數(shù)據(jù)發(fā)送給另一個(gè)進(jìn)程; 2).資源共享 多個(gè)
    的頭像 發(fā)表于 11-10 17:05 ?1222次閱讀
    <b class='flag-5'>進(jìn)程</b><b class='flag-5'>間</b><b class='flag-5'>通信</b>的原理

    進(jìn)程通信的消息隊(duì)列介紹

    消息隊(duì)列是一種非常常見的進(jìn)程通信方式
    的頭像 發(fā)表于 04-08 17:27 ?346次閱讀
    百家乐群号| 百家乐官网搏牌| 风水24山走水| 网络百家乐会输钱的多吗| 线上百家乐游戏| 迪威百家乐官网娱乐网| 尊龙百家乐娱乐平台| 大发888被查| 澳门百家乐官网新濠天地| 威尼斯人娱乐城位置| 百家乐官网视频下栽| 百家乐官网桌出租| 网络百家乐内幕| 伯爵百家乐官网娱乐城| 澳门百家乐网上赌| 财神真人娱乐城| 做生意门朝山| 德州扑克过牌| 真人百家乐宣传| 武宁县| 百家乐平台那家好| 信誉博彩网| 做生意风水 门对门| 封开县| 百家乐真人游戏投注网| 百家乐官网盈利分析路单| 真人百家乐博弈| 百家乐官网天天乐娱乐场| 怎么赌百家乐能赢| 百家乐官网投注方法新版| 钱隆百家乐软件| 去澳门百家乐官网娱乐城| 金榜百家乐的玩法技巧和规则| 百家乐官网开户送8彩金| 大发888在线娱乐游戏| 百家乐官网网上真钱娱乐| 大发888老虎机下载| 风水24山里的四维八干| 百家乐官网网络公式| 太阳城绿萱园| 新澳博百家乐官网的玩法技巧和规则 |