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

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

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

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

進程間通信的消息隊列介紹

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

掃碼添加小助手

加入工程師交流群

消息隊列是一種非常常見的進程間通信方式。

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

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

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

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

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

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

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

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


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

    關(guān)注

    0

    文章

    34

    瀏覽量

    3278

原文標題:進程間通信之消息隊列

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

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

掃碼添加小助手

加入工程師交流群

    評論

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

    RDMA設計43:隊列刪除及連接斷開功能測試

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

    RDMA設計25:隊列管理模塊之發(fā)送模塊詳細設計分析

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

    RDMA設計24:隊列管理模塊設計

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

    進程通信

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

    進程的控制

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

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

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

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

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

    優(yōu)先級隊列介紹

    隊列(Queue)的知識點:「概念」:隊列是一種先進先出(FIFO)的數(shù)據(jù)結(jié)構(gòu),類似于排隊的概念。「基本操作」:enqueue(item): 將元素添加到隊列的末尾。dequeue(): 從
    發(fā)表于 11-26 07:56

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

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

    基于環(huán)形隊列的UART收發(fā)回顯實驗

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

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

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

    RabbitMQ消息隊列解決方案

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

    NVME控制器之隊列管理模塊

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

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

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

    STM32雙核H7核如何通信?

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