久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

博客專欄

EEPW首頁 > 博客 > RTT線程管理

RTT線程管理

發布人:3280519304 時間:2023-06-18 來源:工程師 發布文章

RTT線程管理

RRT是將一個大任務分解成多個小任務,線程是實現任務的載體,是RTT的最基本調度單位,描述了一個任務執行的運行環境和優先等級線程在運行時會認為自己是以獨占CPU的方式運行。

功能特點:

主要功能:對線程進行管理和調度將所有線程分為系統線程和用戶線程

系統線程:由RTT內核創建的線程

用戶線程:由應用程序創建的線程

線程從內核對象容器中分配線程對象,當線程被刪除時也會被從對象容器中刪除

RTT線程調度器為搶占式:從就緒線程列表中查找最高優先級線程,保證它能夠被運行,最高優先級任務一旦就緒,總能得到CPU的使用權;當一個運行著的線程使一個比它優先級高的線程滿足運行條件,當前線程的CPU使用權就會被讓出給更高優先級的線程;當中斷服務程序讓一個高優先級的線程滿足運行條件,中斷完成時,被中斷的線程掛起,優先級高的線程開始運行

調度器切換線程的步驟:

1、保存當前線程上下文/掛起被中斷線程

2、切換到高優先級線程

3、等待高優先級線程運行完畢

4、切換回之前的線程

5、恢復當前線程上下文

線程的基本操作:創建/初始化線程、啟動線程、運行線程、刪除/脫離線程。對于動態線程使用rt_thread_create()創建,動態線程會自動從動態內存堆上分配棧空間與線程句柄(隱含條件:初始化heap后才能使用create創建動態線程);使用rt_thread_init()初始化靜態線程,由用戶為其分配棧空間和線程句柄。

注意分配出的棧空間是按照rtconfig.h中配置的RT_ALIGN_SIZE方式對齊。

線程創建成功返回線程句柄,失敗則返回RT_NULL。

使用rt_thread_delete()刪除線程。

這個函數僅在使能了系統動態堆時才有效(即已經定義RT_USING_HEAP)。

用此函數刪除線程接口僅僅釋放掉了部分控制資源,讓線程變為關閉態,不讓它再使用CPU,真正釋放線程控制塊和釋放線程棧要到下次執行空閑線程時,由空閑線程執行最后的線程刪除任務。

也就是說rt_thread_delete()負責把線程弄死,但尸體還堆在內存里,空閑線程會完成收尸工作。

RT-Thread 線程的優先級是表示線程被調度的優先程度。每個線程都具有優先級,線程越重要,賦予的優先級就應越高,線程被調度的可能才會越大。

RT-Thread 最大支持 256 個線程優先級 (0~255),數值越小的優先級越高,0 為最高優先級。在一些資源比較緊張的系統中,可以根據實際情況選擇只支持 8 個或 32 個優先級的系統配置;對于 ARM Cortex-M 系列,普遍采用 32 個優先級。最低優先級默認分配給空閑線程使用,用戶一般不使用。在系統中,當有比當前線程優先級更高的線程就緒時,當前線程將立刻被換出,高優先級線程搶占處理器運行

*博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。



關鍵詞: 線程管理

技術專區

關閉