博客專欄

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

        RTT線程管理

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

        RTT線程管理

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

        功能特點:

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

        系統(tǒng)線程:由RTT內核創(chuàng)建的線程

        用戶線程:由應用程序創(chuàng)建的線程

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

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

        調度器切換線程的步驟:

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

        2、切換到高優(yōu)先級線程

        3、等待高優(yōu)先級線程運行完畢

        4、切換回之前的線程

        5、恢復當前線程上下文

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

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

        線程創(chuàng)建成功返回線程句柄,失敗則返回RT_NULL。

        使用rt_thread_delete()刪除線程。

        這個函數(shù)僅在使能了系統(tǒng)動態(tài)堆時才有效(即已經定義RT_USING_HEAP)。

        用此函數(shù)刪除線程接口僅僅釋放掉了部分控制資源,讓線程變?yōu)殛P閉態(tài),不讓它再使用CPU,真正釋放線程控制塊和釋放線程棧要到下次執(zhí)行空閑線程時,由空閑線程執(zhí)行最后的線程刪除任務。

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

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

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

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



        關鍵詞: 線程管理

        技術專區(qū)

        關閉
        主站蜘蛛池模板: 临猗县| 乐至县| 正阳县| 辛集市| 金塔县| 崇州市| 大田县| 休宁县| 师宗县| 灵台县| 桃源县| 都匀市| 南充市| 清徐县| 安龙县| 定州市| 乳山市| 台州市| 嫩江县| 探索| 雷州市| 清镇市| 盘山县| 津市市| 怀集县| 济宁市| 阜城县| 崇文区| 景宁| 阿克陶县| 沅陵县| 巴彦县| 慈利县| 杭锦后旗| 南川市| 沁水县| 兴山县| 南岸区| 福海县| 汽车| 南汇区|