91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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)程間通信的消息隊(duì)列介紹

學(xué)益得智能硬件 ? 來源:學(xué)益得智能硬件 ? 2024-04-08 17:27 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

消息隊(duì)列是一種非常常見的進(jìn)程間通信方式。

使用消息隊(duì)列也很簡單。首先是創(chuàng)建消息隊(duì)列,消息隊(duì)列由內(nèi)核來維護(hù),創(chuàng)建成功后,用命令ipcs可以看到。一個(gè)進(jìn)程往消息隊(duì)列中寫入數(shù)據(jù),另一個(gè)進(jìn)程從消息隊(duì)列中讀取數(shù)據(jù)。乍一看,跟管道的讀寫操作一樣。

但是它比管道更加實(shí)用,發(fā)送數(shù)據(jù)的時(shí)候,可以指定數(shù)據(jù)的類型。也就是說,發(fā)出去的數(shù)據(jù)被分成了兩份,一份是具體的數(shù)據(jù),另一份用來表示類型。這樣即使有多個(gè)進(jìn)程來讀取數(shù)據(jù),只要各自指定了類型,數(shù)據(jù)就不會(huì)亂。

而管道卻沒有這么靈活,如果有多個(gè)進(jìn)程讀取管道數(shù)據(jù),先讀的進(jìn)程就能獲得全部數(shù)據(jù)。

消息隊(duì)列主要涉及這么幾個(gè)函數(shù)。創(chuàng)建消息隊(duì)列使用msgget,第一個(gè)參數(shù)是key,用于區(qū)分內(nèi)核中不同的消息隊(duì)列,第二個(gè)參數(shù)表示創(chuàng)建消息隊(duì)列且消息隊(duì)列不存在。

發(fā)送數(shù)據(jù)使用msgsnd,參數(shù)分別是消息隊(duì)列標(biāo)識(shí)、發(fā)送的數(shù)據(jù)、數(shù)據(jù)的長度以及標(biāo)志位。

接收數(shù)據(jù)使用msgrecv,多了一個(gè)參數(shù)表示數(shù)據(jù)的類型。

運(yùn)行程序,一個(gè)進(jìn)程寫入數(shù)據(jù),另一個(gè)進(jìn)程就能把數(shù)據(jù)讀取出來。

這就是進(jìn)程間通信的消息隊(duì)列,他比管道和信號(hào)更加實(shí)用,如果有多個(gè)進(jìn)程需要傳輸數(shù)據(jù),用消息隊(duì)列更加合適。


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

    關(guān)注

    0

    文章

    34

    瀏覽量

    3278

原文標(biāo)題:進(jìn)程間通信之消息隊(duì)列

文章出處:【微信號(hào):學(xué)益得智能硬件,微信公眾號(hào):學(xué)益得智能硬件】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    RDMA設(shè)計(jì)43:隊(duì)列刪除及連接斷開功能測試

    在接收到正確的刪除隊(duì)列請(qǐng)求后,首先進(jìn)入連接斷開流程,即四次揮手?jǐn)噫?如圖中紅框部分。隨后進(jìn)行隊(duì)列刪除操作。返回隊(duì)列操作狀態(tài) 0x2b,符合設(shè)計(jì)預(yù)期,驗(yàn)證通過。
    的頭像 發(fā)表于 02-24 07:50 ?546次閱讀
    RDMA設(shè)計(jì)43:<b class='flag-5'>隊(duì)列</b>刪除及連接斷開功能測試

    RDMA設(shè)計(jì)25:隊(duì)列管理模塊之發(fā)送模塊詳細(xì)設(shè)計(jì)分析

    發(fā)送隊(duì)列存儲(chǔ)為所有發(fā)送隊(duì)列共用的存儲(chǔ)空間,根據(jù)用戶環(huán)境和開發(fā)板環(huán)境不同可由 BRAM、URAM 或 LUTRAM 實(shí)現(xiàn)。發(fā)送隊(duì)列管理單元?jiǎng)t負(fù)責(zé)管理這個(gè)存儲(chǔ)空間,并處理用戶指令和發(fā)送隊(duì)列
    的頭像 發(fā)表于 01-25 16:27 ?3340次閱讀
    RDMA設(shè)計(jì)25:<b class='flag-5'>隊(duì)列</b>管理模塊之發(fā)送模塊詳細(xì)設(shè)計(jì)分析

    RDMA設(shè)計(jì)24:隊(duì)列管理模塊設(shè)計(jì)

    隊(duì)列管理模塊采用管理與存儲(chǔ)分離的結(jié)構(gòu)進(jìn)行設(shè)計(jì),由發(fā)送隊(duì)列存儲(chǔ)、發(fā)送隊(duì)列管理、接收隊(duì)列管理、完成條目解析、異常完成條目處理和 Round-Robin 仲裁組成。
    的頭像 發(fā)表于 01-20 11:45 ?1354次閱讀
    RDMA設(shè)計(jì)24:<b class='flag-5'>隊(duì)列</b>管理模塊設(shè)計(jì)

    進(jìn)程通信

    直接把消息發(fā)送給接收進(jìn)程,并將它掛在接收進(jìn)程的消息緩沖隊(duì)列上,接收進(jìn)程從消息緩沖隊(duì)列中取得消息。   2) 間接
    發(fā)表于 01-15 06:16

    進(jìn)程的控制

    、初始化處理機(jī)狀態(tài)信息和初始化處理機(jī)控制信息,以及設(shè)置進(jìn)程的優(yōu)先級(jí)等。   4. 如果進(jìn)程就緒隊(duì)列能夠接納新進(jìn)程,就將新進(jìn)程插入到就緒
    發(fā)表于 01-15 06:05

    解析Linux的進(jìn)程、線程和協(xié)程

    進(jìn)程通信(IPC):Linux提供了多種IPC機(jī)制,如管道、信號(hào)、共享內(nèi)存和消息隊(duì)列,用于進(jìn)程之間的
    發(fā)表于 12-22 11:00

    C語言的循環(huán)隊(duì)列

    data; } return -1; // Buffer is empty } 循環(huán)隊(duì)列是一種高效的數(shù)據(jù)結(jié)構(gòu),適用于緩沖區(qū)和數(shù)據(jù)流應(yīng)用,例如串口通信接收緩沖。
    發(fā)表于 12-12 08:28

    優(yōu)先級(jí)隊(duì)列介紹

    隊(duì)列(Queue)的知識(shí)點(diǎn):「概念」:隊(duì)列是一種先進(jìn)先出(FIFO)的數(shù)據(jù)結(jié)構(gòu),類似于排隊(duì)的概念?!富静僮鳌梗篹nqueue(item): 將元素添加到隊(duì)列的末尾。dequeue(): 從隊(duì)
    發(fā)表于 11-26 07:56

    Linux進(jìn)程通信(IPC)全解析:從管道到?Socket,一篇講透

    在?Linux?世界里,進(jìn)程并非孤立存在。無論是后臺(tái)服務(wù)協(xié)作(如?Web?服務(wù)器與數(shù)據(jù)庫)、命令行工具聯(lián)動(dòng)(如ps | grep),還是復(fù)雜應(yīng)用的模塊通信,都離不開 進(jìn)程
    的頭像 發(fā)表于 11-14 21:38 ?1.3w次閱讀
    Linux<b class='flag-5'>進(jìn)程</b><b class='flag-5'>間</b><b class='flag-5'>通信</b>(IPC)全解析:從管道到?Socket,一篇講透

    基于環(huán)形隊(duì)列的UART收發(fā)回顯實(shí)驗(yàn)

    在實(shí)際項(xiàng)目開發(fā)中,由于有些串口不具備FIFO(如SCI1和SCI2)或FIFO的buffer比較小,這可能會(huì)在數(shù)據(jù)處理速度小于數(shù)據(jù)接收速度的時(shí)候,導(dǎo)致數(shù)據(jù)的丟失。因此我們可以設(shè)計(jì)一個(gè)隊(duì)列來避免這一
    的頭像 發(fā)表于 10-27 13:51 ?1976次閱讀
    基于環(huán)形<b class='flag-5'>隊(duì)列</b>的UART收發(fā)回顯實(shí)驗(yàn)

    【HZ-T536開發(fā)板免費(fèi)體驗(yàn)】—— linux 進(jìn)程創(chuàng)建

    Linux進(jìn)程通信方式有這幾種: 1。管道 2。信號(hào)量 3。消息隊(duì)列 4。共享內(nèi)存 在本帖子中,我會(huì)講解fork(),exit()系統(tǒng)調(diào)用的實(shí)踐。通過應(yīng)用編程來實(shí)現(xiàn)系統(tǒng)調(diào)用。 1,進(jìn)程
    發(fā)表于 09-01 20:49

    RabbitMQ消息隊(duì)列解決方案

    在現(xiàn)代分布式系統(tǒng)架構(gòu)中,消息隊(duì)列作為核心組件,承擔(dān)著系統(tǒng)解耦、異步處理、流量削峰等重要職責(zé)。RabbitMQ作為一款成熟的消息隊(duì)列中間件,以其高可用性、高可靠性和豐富的特性,成為眾多企業(yè)的首選方案。本文將從運(yùn)維工程師的角度,詳細(xì)闡述RabbitMQ從單機(jī)部署到集群搭建的完
    的頭像 發(fā)表于 07-08 15:55 ?632次閱讀

    NVME控制器之隊(duì)列管理模塊

    隊(duì)列管理模塊是整個(gè)NVMe Host控制器的核心模塊,該模塊實(shí)現(xiàn)了提交隊(duì)列與完成隊(duì)列的管理,多隊(duì)列請(qǐng)求的仲裁判決等功能。隊(duì)列管理模塊中含有數(shù)
    的頭像 發(fā)表于 05-03 15:32 ?655次閱讀
    NVME控制器之<b class='flag-5'>隊(duì)列</b>管理模塊

    Linux進(jìn)程狀態(tài)詳解

    進(jìn)程狀態(tài)是task_struct內(nèi)的一個(gè)整數(shù);進(jìn)行:進(jìn)程在調(diào)度隊(duì)列中,進(jìn)程的狀態(tài)都是running,阻塞:等待某種設(shè)備或者資源就緒。進(jìn)程是一
    的頭像 發(fā)表于 04-01 09:46 ?1160次閱讀
    Linux<b class='flag-5'>進(jìn)程</b>狀態(tài)詳解

    STM32雙核H7核如何通信?

    STM32雙核H7核通信的方法,主要是CM7和CM4之間如何進(jìn)行數(shù)據(jù)傳遞
    發(fā)表于 03-12 07:34