中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

vxworks中如何控制任務

發布時間:2021-12-22 09:58:37 來源:億速云 閱讀:160 作者:小新 欄目:互聯網科技

小編給大家分享一下vxworks中如何控制任務,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

任務被taskSpawn()創建或taskActivate()激活后,直接進入Ready隊列。但實際運行時,任務大部分時間處于其它狀態,并不是Ready態,不然CPU的占用率就很高了,功耗也就上去了,那肯定是軟件架構的設計出問題了。

VxWorks的taskLib庫里關于控制任務狀態的一些函數

vxworks中如何控制任務

taskSuspend()是將任務放到Suspend隊列,taskResume()是將任務放到Ready隊列,這兩個API通常只是在調試時才會使用。taskSuspend(0)就是掛起任務本身,就像我們在《Task之常見系統任務》里觀察tRootTask時所作的。不過taskResume(0)就是無效操作了,想想為啥?

taskRestart()的主要作用是重啟發生嚴重錯誤的任務。既然它只有一個參數,說明重啟的任務使用的是原有的屬性,包括ID、優先級、選項、入口地址、棧尺寸。其中優先級和選項可能被動態改變過,那就使用最新的值。

taskDelay()通常用在輪詢操作之中,它會讓當前任務進入Delay隊列,期限到時之后,再返回Ready隊列中同優先級任務的尾部。其參數單位是tick,也就是系統時鐘的頻率。例如delay兩秒,通常這樣寫:

vxworks中如何控制任務

sysClkRateGet()的作用就是返回系統時鐘每秒鐘的tick數。每個VxWorks版本的系統時鐘頻率默認都是60,但taskDelay(120),不一定是Delay兩秒。因為可以通過sysClkRateSet()修改時鐘頻率

vxworks中如何控制任務

要注意的是,每個tick到來時,都會觸發系統時鐘中斷,所以不建議把系統時鐘頻率設置得太快,否則會降低系統性能。

taskDelay()的參數是整型值,所以使用時要注意整除的問題。例如,使用默認的系統時鐘頻率時,就不可能精確延時1/7秒。

sysClkRateGet()/7 = 60/7 = 8,8個tick,只是8/60秒了。

當taskDelay()的參數為0時,任務并不會進入Delay狀態,而是直接把CPU讓給同優先級的任務(如果有的話),自己排到同優先級任務的尾部,這就相當于Linux系統的sched_yield()操作。

我們在《Task之任務的創建》里提到過,使用taskPriorityGet()/taskPrioritySet(),可以查詢/調整任務的優先級。另外還有幾個API可以查詢任務的狀態信息

vxworks中如何控制任務

從名字就可以看出來taskInfoGet()最為強大,它可以獲得TCB里的大部分信息

vxworks中如何控制任務

以上是“vxworks中如何控制任務”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

昔阳县| 屏东市| 裕民县| 高台县| 华池县| 蒙城县| 浦东新区| 安丘市| 都匀市| 黄石市| 徐水县| 宜昌市| 长阳| 桂阳县| 枣强县| 宁海县| 雷州市| 乌恰县| 台安县| 夏津县| 郧西县| 蒲江县| 台南县| 宁晋县| 门头沟区| 吉安县| 晋中市| 德钦县| 玛多县| 平凉市| 大悟县| 天祝| 锦屏县| 嘉鱼县| 宜兰市| 通许县| 太保市| 南康市| 青铜峡市| 清水县| 富顺县|