uc os iii學習筆記 訊息傳遞

2021-07-15 06:47:54 字數 1024 閱讀 6165

訊息佇列

如圖所示,訊息通過os_msg_q結構體組成乙個訊息佇列,其中inptr指標指向下乙個訊息插入的位置,outptr指標指向下乙個將要取出的訊息的位置。

在os_msg結構是訊息的結構體,其中msgsize顧名思義就是訊息的長度引數,msgts就是訊息的時間戳,而msgptr指標指向的就是資料區或者函式。

整體資料結構關係如下圖所示:

任務自己也有乙個內建的訊息佇列,通過內建訊息佇列可以更加簡單快速的進行訊息的操作。

同任務內嵌訊號量一樣,ucosiii的每個任務中也有內建訊息佇列。而且多個任務等待同乙個訊息佇列的應用很少見,ucosiii中每個任務多有其內建訊息佇列的話使用者可以不用通過外部的訊息佇列而直接向任務發布訊息。

如果需要使用任務內建訊息佇列功能的時候需要將巨集os_cfg_task_q_en置1來使能相關的**。

下圖是訊息佇列:

舉個例子:

osqcreate ((os_q* )&key_msg,//訊息佇列

(cpu_char* )"key msg",//訊息佇列名稱

(os_msg_qty )keymsg_q_num,//訊息佇列長度

(os_err* )&err); //返回錯誤資訊

其他的函式差不多同理,可以自行檢視原始碼,離開原始碼是無法知曉具體流程的!!!!!

下圖是內建訊息佇列:

ucos iii 訊息佇列

建立乙個訊息佇列 osqcreate os cfg q en os q commq os err err osqcreate commq,comm queue 10,err 刪除乙個訊息佇列 osqdel os cfg q en os cfg q del en os q dispq os err e...

UCOS III學習筆記(一)

使用者指定元素的位數 如32bit 那麼ospriotbl結構即為任務就緒表,其中每乙個元素是乙個使用者制定位數的元素 os priogethighest 函式遍歷這個陣列並找到第乙個不為零的元素 找到那一行 計算這個元素的前導零個數之後即可得到最高的優先順序任務 前導零為乙個二進位制數第乙個1前出...

Akka學習筆記 Actor訊息傳遞 2

文章目錄 hide 3 teacher actor 我們在前面僅僅討論了actorref的quoterequest,並沒有看到message的類!這裡將介紹,如下 1packageme.rerun.akkanotes.messaging.protocols 2 3objectteacherproto...