一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

消息隊(duì)列和管道的區(qū)別(轉(zhuǎn)載)

 看風(fēng)景D人 2014-04-10

轉(zhuǎn)載自:http://bbs./viewthread.php?tid=265266
作者:beginner-bj
請(qǐng)問(wèn)管道和消息隊(duì)列有什么不同

 管道通信(PIPE)

管道通信方式的中間介質(zhì)是文件,通常稱這種文件為管道文件。兩個(gè)進(jìn)程利用管道文件進(jìn)行通信時(shí),一個(gè)

進(jìn)程為寫(xiě)進(jìn)程,另一個(gè)進(jìn)程為讀進(jìn)程。寫(xiě)進(jìn)程通過(guò)寫(xiě)端(發(fā)送端)往管道文件中寫(xiě)入信息;讀進(jìn)程通過(guò)讀

端(接收端)從管道文件中讀取信息。兩個(gè)進(jìn)程協(xié)調(diào)不斷地進(jìn)行寫(xiě)、讀,便會(huì)構(gòu)成雙方通過(guò)管道傳遞信息

的流水線。

利用系統(tǒng)調(diào)用PIPE()創(chuàng)建一個(gè)無(wú)名管道文件,通常稱為無(wú)名管道或PIPE;利用系統(tǒng)調(diào)用MKNOD()創(chuàng)建

一個(gè)有名管道文件,通常稱為有名管道或FIFO。

PIPE是一種非永久性的管道通信機(jī)構(gòu),當(dāng)它訪問(wèn)的進(jìn)程全部終止時(shí),它也將隨之被撤消;它也不能用于不

同族系的進(jìn)程之間的通信。而FIFO是一種永久的管道通信機(jī)構(gòu),它可以彌補(bǔ)PIPE的不足。

管道文件被創(chuàng)建后,便可對(duì)它進(jìn)行讀寫(xiě)操作,通過(guò)系統(tǒng)調(diào)用WRITE()和READ()來(lái)實(shí)現(xiàn)。通信完畢后,

可將管道文件關(guān)閉,用CLOSE()來(lái)實(shí)現(xiàn)。

消息通信(MESSAGE)

消息通信方式以消息緩沖區(qū)為中間介質(zhì),通信雙方的發(fā)送和接收操作均以消息為單位。在存儲(chǔ)器中,消息

緩沖區(qū)被組織成隊(duì)列,通常稱之為消息隊(duì)列。

創(chuàng)建消息隊(duì)列用系統(tǒng)調(diào)用MSGGET()來(lái)實(shí)現(xiàn),這一步工作也被稱為消息隊(duì)列的初始化。在進(jìn)行通信時(shí),消

息隊(duì)列的發(fā)送和接收分別用系統(tǒng)調(diào)用MSGSND()和MSGRCV()來(lái)實(shí)現(xiàn)。在需要改變隊(duì)列的使用權(quán)限及其它

一些特性時(shí),用MSGCTL()來(lái)實(shí)現(xiàn)。

轉(zhuǎn)載自:http://bbs./viewthread.php?tid=257062
作者:foxmanzj

請(qǐng)問(wèn)消息隊(duì)列比運(yùn)用管道有什么優(yōu)勢(shì)?


管道一般用于父子進(jìn)程間通信(有名管道除外,有名管道不限于父子進(jìn)程通信)。而消息隊(duì)列可用于你機(jī)

器上的任何進(jìn)程間通信(只要進(jìn)程有權(quán)操作消息隊(duì)列)。

轉(zhuǎn)載自:http://www./bbs/showthread.php?t=235978
作者:kj501
如果要大規(guī)模的復(fù)制數(shù)據(jù),最快的方法莫過(guò)于共享內(nèi)存。管道只是所有的UNIX都支持,性能上肯定不如共

享內(nèi)存。
至于消息隊(duì)列,有些UNIX系統(tǒng)肯定是不支持的。具體的你可以看看APUE第二版的15.1節(jié)

轉(zhuǎn)載自:http://www.ibm.com/developerworks/cn/linux/l-ipc/part3/
消息隊(duì)列與管道以及有名管道相比,具有更大的靈活性,首先,它提供有格式字節(jié)流,有利于減少開(kāi)發(fā)人

員的工作量;其次,消息具有類(lèi)型,在實(shí)際應(yīng)用中,可作為優(yōu)先級(jí)使用。這兩點(diǎn)是管道以及有名管道所不

能比的。同樣,消息隊(duì)列可以在幾個(gè)進(jìn)程間復(fù)用,而不管這幾個(gè)進(jìn)程是否具有親緣關(guān)系,這一點(diǎn)與有名管

道很相似;但消息隊(duì)列是隨內(nèi)核持續(xù)的,與有名管道(隨進(jìn)程持續(xù))相比,生命力更強(qiáng),應(yīng)用空間更大。

 

轉(zhuǎn)載自:http://blog.sina.com.cn/s/blog_4a0e545d01000c7l.html

vxworks消息隊(duì)列與其他方式的一些比較:

1、信號(hào)量使用方便,可以解決很多任務(wù)間的協(xié)調(diào)問(wèn)題,但是信號(hào)量所傳遞的信息有限,而內(nèi)存共享雖然

傳遞信息可以大些,但是不標(biāo)準(zhǔn)。消息隊(duì)列作為一種折忠方式用于線程之間的信息交換。

2、消息隊(duì)列允許許多的消息排隊(duì),而每個(gè)信息可以有不同長(zhǎng)度,而傳統(tǒng)管道中的數(shù)據(jù)僅僅是一個(gè)數(shù)據(jù)流

,沒(méi)有邊界。Vxworks中的管道數(shù)據(jù)有消息組成。


vxworks消息隊(duì)列
消息隊(duì)列允許一定數(shù)量不同長(zhǎng)度的消息進(jìn)行排列。任何任務(wù)或中斷服務(wù)程序(ISR)能夠發(fā)送消息給消息隊(duì)

列。任何任務(wù)可以從消息隊(duì)列接受消息。多任務(wù)可以從同意消息隊(duì)列發(fā)送和接受消息。兩個(gè)任務(wù)之間的全

雙工(Full-duplex)通信需要針對(duì)不同方向的兩個(gè)消息隊(duì)列。
一個(gè)任務(wù)或中斷服務(wù)程序(ISR)用函數(shù)msgQSend( )發(fā)送一個(gè)消息到消息隊(duì)列。如果沒(méi)有任務(wù)等待消息隊(duì)列

的消息,這個(gè)消息被添加消息緩存的隊(duì)列里。如果某些任務(wù)已經(jīng)在等待消息隊(duì)列中的消息,消息立刻被傳

遞給第一個(gè)等待的消息的任務(wù)。

一個(gè)任務(wù)用函數(shù)msgQReceive( )從消息隊(duì)列得到一個(gè)消息。如果消息隊(duì)列緩存中有消息存在,第一個(gè)消息

立刻出列并回到調(diào)用處(caller).如果沒(méi)有消息存在,則任務(wù)(calling task)停止(blocks)并被添加到

等待消息的任務(wù)隊(duì)列中。這個(gè)等待的任務(wù)隊(duì)列按照優(yōu)先級(jí)或先進(jìn)先出(FIFO)規(guī)則排列,這個(gè)規(guī)則有消息

隊(duì)列創(chuàng)建時(shí)所指定。

管道(Pipes)

管道對(duì)消息隊(duì)列提供了一個(gè)可供選擇的接口,VxWorks的I/O系統(tǒng)。管道是虛擬的I/O設(shè)備,由驅(qū)動(dòng)pipeDrv

管理。函數(shù)pipeDevCreate()創(chuàng)建一個(gè)管道設(shè)備,這個(gè)調(diào)用指定管道的名字,能被排列的最多的消息數(shù),

和每個(gè)消息允許的長(zhǎng)度。

status = pipeDevCreate ("/pipe/name", max_msgs, max_length);

被創(chuàng)建的管道是一個(gè)通常命名(named)的I/O設(shè)備,任務(wù)能用標(biāo)準(zhǔn)的I/O函數(shù)打開(kāi),讀,寫(xiě)管道,并能調(diào)用

ioctl例程。當(dāng)任務(wù)試圖從一個(gè)空的管道中讀取數(shù)據(jù),或向一個(gè)滿的管道中寫(xiě)入數(shù)據(jù)時(shí),任務(wù)被阻塞。和

消息隊(duì)列一樣,ISR可以向管道寫(xiě)入,但不能從管道讀取。

轉(zhuǎn)載自:http://www./news/Article_Show.asp?ArticleID=231

vxworks消息隊(duì)列和管道
消息隊(duì)列是VxWorks提供的單個(gè)CPU中的任務(wù)之間通信的主要機(jī)制之一。消息隊(duì)列允許基于FIFO或基于任務(wù)

優(yōu)先級(jí)方式排隊(duì)消息,一個(gè)消息隊(duì)列的消息數(shù)目和消息長(zhǎng)度可以由開(kāi)發(fā)者在創(chuàng)建消息隊(duì)列時(shí)指定。在理論

上,VxWorks允許多個(gè)任務(wù)向同一個(gè)消息隊(duì)列發(fā)送消息,或者從同一個(gè)消息隊(duì)列接收消息;而在實(shí)際應(yīng)用

中,一般來(lái)說(shuō)只有一個(gè)任務(wù)從消息隊(duì)列接收消息,有一個(gè)或多個(gè)任務(wù)發(fā)送消息,即這個(gè)消息隊(duì)列有多個(gè)生

產(chǎn)者,而只有一個(gè)消費(fèi)者。消息隊(duì)列時(shí)單向的,對(duì)于需要進(jìn)行雙向通信的兩個(gè)任務(wù),必須使用兩個(gè)消息隊(duì)

列。消息隊(duì)列非常適合于Client-Server結(jié)構(gòu)的任務(wù)之間的通信.

在VxWorks中,消息隊(duì)列是一種代價(jià)比較高的一種通信機(jī)制,因此在使用時(shí)應(yīng)該使消息的長(zhǎng)度盡量短,而

且應(yīng)避免在需要十分頻繁通信的場(chǎng)合使用消息隊(duì)列。另外消息隊(duì)列中的消息是排隊(duì)的,即使是完全相同的

消息,后面的消息也不會(huì)覆蓋前面的消息。

管道(pipe)
在VxWorks中,管道是一種通過(guò)虛擬的I/O設(shè)備來(lái)實(shí)現(xiàn)的消息隊(duì)列通信機(jī)制。使用函數(shù)pipeDevCreate()和

pipeDevDelete()來(lái)生成和刪除管道,管道一經(jīng)生成后,任務(wù)之間就可以使用標(biāo)準(zhǔn)I/O操作主要是read()和

write()進(jìn)行通信。管道的優(yōu)點(diǎn)在于它是一個(gè)I/O設(shè)備,與標(biāo)準(zhǔn)的VxWorks 
I/O一樣,可以使用select機(jī)制,而有了select機(jī)制,一個(gè)任務(wù)很方便地使用多個(gè)異步I/O設(shè)備,如任務(wù)要

處理同時(shí)從串口、管道、socket接收到的數(shù)據(jù),就可以使用select。

來(lái)自:http://www.cnblogs.com/qqivoryqq/archive/2009/09/24/1573125.html

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多

    内射精品欧美一区二区三区久久久 | 午夜福利网午夜福利网| 大香蕉伊人精品在线观看| 欧洲日本亚洲一区二区| 国产传媒高清视频在线| 加勒比东京热拍拍一区二区| 五月天丁香亚洲综合网| 男人和女人黄 色大片| 草草草草在线观看视频| 少妇人妻精品一区二区三区| 日本一本不卡免费视频| 日韩一区二区三区观看| 亚洲中文字幕三区四区| 久久热九九这里只有精品| 欧美精品中文字幕亚洲| 在线欧美精品二区三区| 白白操白白在线免费观看| 日韩精品综合免费视频| 欧美精品亚洲精品日韩精品| 久久精品国产99精品最新| 欧美日韩一级aa大片| 一区二区三区国产日韩| 又色又爽又无遮挡的视频 | 久久人妻人人澡人人妻| 亚洲欧美日韩国产自拍| 亚洲一区二区精品久久av| 91熟女大屁股偷偷对白| 久久女同精品一区二区| 国产免费黄片一区二区| 九九热视频网在线观看| 人妻少妇av中文字幕乱码高清| 欧洲日韩精品一区二区三区| 在线九月婷婷丁香伊人| 黄色日韩欧美在线观看| 亚洲欧美国产网爆精品| 久久精品a毛片看国产成人| 国产亚洲不卡一区二区| 二区久久久国产av色| 亚洲另类女同一二三区| 午夜精品在线视频一区| 成年午夜在线免费视频|