CoOS使用教程 任務的狀態

2021-07-09 03:02:32 字數 683 閱讀 8199

coos中,任務有四種狀態,分別是:就緒態、執行態、等待態、休眠態。

為什麼要分不同的狀態?

目的就為了把cpu讓給更有需要的任務,比如,你開啟乙個瀏覽器,又開啟乙個遊戲(需要全屏),這樣在你玩遊戲的時候,就讓瀏覽器這個任務掛起,以進入等待狀態。

然後整個cpu都在為遊戲服務,而不會出現卡頓現象。

同樣的原理,也能運用在微控制器當中。

1、cogetcurtaskid(),獲得任務id號

os_tid cogetcurtaskid(void);

這個函式,只能用在任務內部,獲得任務id號之後,就可以讓任務進入不同的狀態了。

成功獲得id號的話,返回os_tid變數。

2、cosuspendtask(),掛起任務

statustype cosuspendtask(os_tid taskid);

3、coawaketask(),喚醒任務

statustype coawaketask(os_tid taskid);

任務a掛起之後,它自己不能進入就緒態的,必須等其它任務喚醒它。

CoOS使用教程 事件標誌

coos提供了乙個事件標誌的機制,用起來跟訊號量差不多。1 cocreateflag 建立乙個事件標誌 os flagid cocreateflag bool bautoreset,bool binitialstate bautoreset,為0表示手動復位,為1表示自動復位。binitialsta...

CoOS使用教程 訊息郵箱

訊息郵箱是一種任務間通訊的機制,用起來跟qq 163的郵箱差不多。但是coos下的訊息郵箱只能存放一條訊息,是臨界資源,所以我這裡用了互斥量,以免出錯。最終效果如下圖所示 1 cocreatembox 建立乙個訊息郵箱。os eventid cocreatembox u8 sorttype sort...

UCOSIII的任務狀態

1 休眠態 任務已經在cpu的flash中了,但是還沒有交給ucosiii管理。2 就緒態 系統為任務分配了任務控制塊,並且任務已經在就緒表中登記,這時這個任務就具有了執行的條件,此時任務的狀態就是就緒態。3 執行態 任務獲得cpu的使用權,正在執行。任何時刻只能有乙個任務處於執行態。4 等待態 正...