RT Thread應用5 訊息佇列1

2021-09-29 20:50:31 字數 1072 閱讀 2722

一、訊息佇列概念

——用於執行緒間通訊的資料結構

當佇列中的訊息是空時,掛起讀取執行緒,使用者還可以指定掛起的執行緒時間 timeout;

當佇列中有新訊息時,掛起的讀取執行緒被喚醒並處理新訊息,訊息佇列是一種非同步的通訊方式。

二、訊息佇列的運作機制

要點:三、訊息佇列的阻塞機制

阻塞機制——目的:為了保護每個執行緒對訊息佇列能正常完成讀寫操作,而不受後來的執行緒干擾的過程,

實現:rt-thread 已經做好了,直接使用。每個對訊息佇列讀寫的函式,都有這種阻塞機制。

說明:傳送訊息並不帶有阻塞機制的,因為傳送訊息的環境可能是在中斷中,不允許有阻塞的情況。

四、訊息佇列應用場景

訊息佇列可應用於傳送不定長訊息的場合,包括執行緒與執行緒間的訊息交換,以及在中斷服務函式中給執行緒傳送訊息(中斷服務例程不可能接收訊息)。

五、訊息佇列控制塊

——重要的核心控制塊

1

struct rt_messagequeue

;15 typedef struct rt_messagequeue *rt_mq_t;

(6):煉表頭指標,指向即將讀取資料的節點。(7):鍊錶尾指標,指向允許寫入資料的節點

RT Thread的訊息佇列

1.訊息佇列控制塊的組成 結構體 通過下圖可以很容易發現訊息佇列有8個元素.msg pool msg size max msgs entry msg queue head msg queue tail msg queue free和.parent,其中.msg pool為訊息佇列的起始位址 msg ...

MQ訊息佇列應用

很榮幸,原來一直聽說的訊息佇列終於在前段時間用到了自己的專案中。為什麼會用到訊息佇列?毫無疑問,當然是傳輸訊息。這裡訊息一般是一串字串,當然,訊息的含義很多,可以是 hello world 可以是 你吃飯了嗎?可以是一串正式的xml報文。也可以是乙個txt檔案或者xml檔案 在用active mq的...

訊息佇列常見的 5 個應用場景

一 簡介 訊息中介軟體 message queue middleware,簡稱mq 又稱為訊息佇列,是指利用高效可靠的訊息傳遞機制進行與平台無關的資料交流,並基於資料通訊來進行分布式系統的構建。是分布式系統中重要的元件,主要解決應用耦合,非同步訊息,流量削鋒等問題。實現高效能 高可用 可伸縮和最終一...