uc/os-iii學習筆記-訊息傳遞
訊息
- 一則訊息包含幾個部分:指向資料的指標、表明資料長度的變數、記錄訊息釋出時刻的時間戳。
- 指標指向的可以是一塊資料區或者一個函式。
- 訊息的內容必須一直保持可見性,即訊息的便令必須在接收訊息的任務程式碼範圍內有效。
訊息佇列
如圖所示,訊息通過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); //返回錯誤資訊
其他的函式差不多同理,可以自行檢視原始碼,離開原始碼是無法知曉具體流程的!!!!!
下圖是內建訊息佇列:
相關文章
- uc/os-iii學習筆記-資源管理(中斷、訊號、訊號量、互斥訊號量)筆記
- uc/os-iii學習筆記-任務同步(訊號量、時間標誌組)筆記
- uc/os-iii學習筆記---同時等待多個核心物件筆記物件
- QNX學習 -- API之訊息傳遞API
- vue---元件間傳遞訊息(父子傳遞訊息,兄弟傳遞訊息)Vue元件
- Android訊息傳遞之元件間傳遞訊息Android元件
- 【iCore3 雙核心板_ uC/OS-III】例程十:訊息佇列佇列
- 深度學習與圖神經網路學習分享:訊息傳遞模式深度學習神經網路模式
- iOS開發筆記(三):訊息傳遞與轉發機制iOS筆記
- Flutter中訊息傳遞Flutter
- 【iCore3 雙核心板_ uC/OS-III】例程十一:任務訊息佇列佇列
- 訊息中介軟體-kafka學習筆記一Kafka筆記
- 小碼哥iOS學習筆記第十三天:訊息傳送iOS筆記
- flutter 訊息傳遞機制Flutter
- Handler訊息傳遞機制
- Android訊息傳遞之Handler訊息機制Android
- 程式設計學習筆記之訊息地圖程式設計筆記地圖
- 【iCore3 雙核心板_ uC/OS-III】例程一:認識 uC/OS-III
- 學習筆記——Maven 如何處理傳遞性依賴筆記Maven
- 【轉】使用oracle pipe傳遞訊息Oracle
- 學習在.NET Core中使用RabbitMQ進行訊息傳遞之持久化(二MQ持久化
- 執行緒通訊機制:共享記憶體 VS 訊息傳遞執行緒記憶體
- C#視窗間傳遞訊息C#
- Redis 學習筆記(六)Redis 如何實現訊息佇列Redis筆記佇列
- Laravel集合探學系列——高階訊息傳遞實現(二)Laravel
- Spring Boot 參考指南(訊息傳遞)Spring Boot
- Aeron訊息傳遞客戶端--Go版客戶端Go
- 《從零開始學Swift》學習筆記(Day 19)——函式引數傳遞Swift筆記函式
- golang工作筆記(二)值傳遞與引用傳遞Golang筆記
- 【iCore3 雙核心板_ uC/OS-III】例程八:互斥訊號量
- Android Handler訊息傳遞機制詳解Android
- objc系列譯文(7.4):訊息傳遞機制OBJ
- 音視訊學習筆記(一)筆記
- 【iCore3 雙核心板_ uC/OS-III】例程九:任務訊號量
- Android之Handler訊息傳遞機制詳解Android
- RabbitMQ 和訊息傳遞常用一些術語MQ
- NATS訊息傳遞與REST效能比較 | VinsguruREST
- 基於WebSocket的實時訊息傳遞設計Web