uc/os-iii學習筆記---同時等待多個核心物件
同時等待多個核心物件
前面我們講過都是等待單個核心物件,包括:訊號量、互斥訊號量、訊息佇列和事件標誌組。在UCOS–III中允許任務同時等待多個訊號量和多個訊息佇列,也就是說,UCOS–III不支援同時等待多個事件標誌組或互斥訊號量。
一個任務可以等待任意數量的訊號量和訊息佇列,第一個訊號量或訊息佇列的釋出會導致該任務進入就緒態。
- 一個任務可以呼叫函式
OSPendMulti()
函式來等待多個物件,並且可以根據需要指定一個等待超時值,函式OSPendMulti()
,舉個例子
-
OSPendMulti((OS_PEND_DATA* )pend_multi_tbl,//需定義的陣列,陣列的例子在此函式下面
(OS_OBJ_QTY )CORE_OBJ_NUM, //核心物件數量
(OS_TICK )0, //0就是一直等待下去
(OS_OPT )OS_OPT_PEND_BLOCKING,//物件未傳送時任務掛起等待,OS_OPT_NON_PEND_BLOCKING就是物件未傳送直接返回
(OS_ERR* )&err); //同樣是返回的錯誤資訊
OS_PEND_DATA pend_multi_tbl[CORE_OBJ_NUM];//定義一個陣列,陣列大小推薦使用巨集定義方式定義
pend_multi_tbl[0].PendObjPtr=(OS_PEND_OBJ*)&Test_Sem1;//等待訊號Test_Sem1
pend_multi_tbl[1].PendObjPtr=(OS_PEND_OBJ*)&Test_Sem2;//等待訊號Test_Sem2
pend_multi_tbl[2].PendObjPtr=(OS_PEND_OBJ*)&Test_Q;//等待訊息Test-Q
相關文章
- uc/os-iii學習筆記-訊息傳遞筆記
- uc/os-iii學習筆記-任務同步(訊號量、時間標誌組)筆記
- 【iCore3 雙核心板_ uC/OS-III】例程一:認識 uC/OS-III
- 【iCore3 雙核心板_ uC/OS-III】例程四:時間管理
- uc/os-iii學習筆記-資源管理(中斷、訊號、訊號量、互斥訊號量)筆記
- bootstrap學習筆記 多媒體物件boot筆記物件
- 【iCore3 雙核心板_ uC/OS-III】例程五:軟體定時器定時器
- JVM核心學習筆記JVM筆記
- Promise 物件學習筆記Promise物件筆記
- 【iCore3 雙核心板_ uC/OS-III】例程十:訊息佇列佇列
- 【iCore3 雙核心板_ uC/OS-III】例程八:互斥訊號量
- 學習筆記——物件方法整理筆記物件
- Android 學習筆記核心篇Android筆記
- elasticsearch學習筆記一:核心概念Elasticsearch筆記
- webpack 學習筆記:核心概念(下)Web筆記
- webpack 學習筆記:核心概念(上)Web筆記
- Java NIO 核心元件學習筆記Java元件筆記
- 【iCore3 雙核心板_ uC/OS-III】例程九:任務訊號量
- 多項式學習筆記筆記
- 學習筆記 物件許可權筆記物件
- oracle學習筆記(十四) 資料庫物件 索引 檢視 序列 同義詞Oracle筆記資料庫物件索引
- 學習筆記 過程、同義詞、序列筆記
- 【iCore3 雙核心板_ uC/OS-III】例程十一:任務訊息佇列佇列
- 【iCore3 雙核心板_ uC/OS-III】例程六:訊號量——共享資源
- 【iCore3 雙核心板_ uC/OS-III】例程七:訊號量——任務同步
- JAVA核心技術學習筆記--反射Java筆記反射
- Linux 核心學習筆記-磁碟篇Linux筆記
- MakeFile 學習筆記一 核心內容筆記
- C++ 一些學習筆記(十二)類和物件-多型C++筆記物件多型
- Python學習筆記 - 多程式Python筆記
- 多執行緒學習筆記執行緒筆記
- Java學習筆記之類和物件Java筆記物件
- Lua學習筆記--物件導向(三)筆記物件
- 【iCore3 雙核心板_ uC/OS-III】例程二:任務的建立與刪除
- Linux學習筆記——例說makefile 多個檔案Linux筆記
- 數論學習筆記 (5):同餘與逆元筆記
- 【iCore3 雙核心板_ uC/OS-III】例程三:任務的掛起與恢復
- Flutter學習筆記(8)--Dart物件導向Flutter筆記Dart物件