RT-Thread學習之——靜態線程和動態線程


RT-Thread中支持靜態和動態兩種定義方式。

用線程來舉例的話,rt_thread_init對應靜態定義方式,rt_thread_create對應動態定義方式。

使用靜態定義方式時,必須先定義靜態的線程控制塊,並且定義好堆棧空間,然后調用rt_thread_init來完成線程的初始化工作。采用這種方式,線程控制塊和堆棧占用的內存會放在RW段,這段空間在編譯時就已經確定,它不是可以動態分配的,所以不能被釋放。而只能使用rt_thread_detach函數將該線程控制塊從對象管理器中脫離。

使用動態定義方式rt_thread_create時,RT-Thread會動態申請線程控制塊和堆棧空間。在編譯時,編譯器是不會感知到這段空間的,只有在程序運行時,RT-Thread才會從系統堆中申請分配這段內存空間,當不需要使用該線程時,調用rt_thread_delete函數就會將這段申請的內存空間重新釋放到內存堆中。

這兩種方式各有利弊,

靜態定義方式會占用RW空間,但是不需要動態分配內存,運行時效率高。
動態方式不會占用額外的RW空間,占用空間小,但是運行時需要動態分配內存,效率沒有靜態方式高。
總的來說,這兩種方式就是空間和時間效率的平衡,可以根據實際環境需求選擇采用具體的分配方式。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM