在rt-thread中,與小任務對應的程式實體就叫做「執行緒」(或任務) ,rt-thread就是乙個能對這些小「執行緒」進行管理和排程的多「執行緒」作業系統。
執行緒是實現任務的載體,它是rt-thread中最基本的排程單位,它描述了乙個任務執行的執行環境,也描述 了這個任務所處的優先等級。
rt_thread中,執行緒有三部分組成:執行緒**(入口函式),執行緒控制塊,執行緒堆疊。
執行緒**如下:
1.無限迴圈模式
void thread_entry(void *parameter)
}2.順序執行模式
void thread_entry(void *parameter)
執行緒控制塊
執行緒控制塊是作業系統用於管理執行緒的乙個資料結構,它會存放執行緒的一些資訊,例如優先順序、執行緒名稱、執行緒狀態等,也包括執行緒與執行緒之間連線用的鍊錶結構,執行緒等待事件集 合等。
struct_thread
struct_thread *rt_thread_t //執行緒控制塊記錄執行緒的一些資訊
執行緒棧
執行緒的建立
1 建立執行緒
建立靜態執行緒
rt_err_t rt_thread_init(struct_thread *thread,
const char *name,
void (*entry)(void *parameter),
void *parameter,
void *stack_start,
rt_uint32_t stack_size,
rt_uint8_t priority,
rt_uint32_t tick)
建立動態執行緒
rt_thread_t rt_thread_create(const char *name,
void (*entry)(viod *parameter),
void *parameter,
rt_uint32_t stack_size,
rt_uint8_t priority,
rt_uint32_t tick)
2 啟動執行緒
rt_err_t rt_thread_startup(rt_thread_t thread)
呼叫此函式後建立的執行緒會被加入到執行緒的就緒佇列裡,,執行排程。
靜態執行緒和動態執行緒的區別:相關資源的分配形式上,靜態執行緒的執行緒控制塊和執行緒棧要先定義出來,但是動態執行緒則不必,動態執行緒的執行緒控制塊和執行緒棧是在執行時動態分配的。 RT Thread學習記錄10 執行緒的優先順序翻轉
1.優先順序翻轉 使用訊號量會導致的另乙個潛在問題是執行緒優先順序翻轉問題。所謂執行緒優先順序翻轉,即當乙個高優先順序執行緒試圖通過某種互斥ipc物件機制訪問共享資源時,如果該ipc物件已被低優先順序的執行緒所持有,而這個低優先順序執行緒在執行過程中可能又被其它一些 中等優先順序的執行緒搶占,因此造...
老李的RT THREAD學習05 執行緒
在工程中增加執行緒檔案 完整 注意2點 用到的函式有2個,分別是 rt thread init 和 rt thread startup 很顯然第1個是執行緒初始化,第2個是執行緒啟動。rt err t rt thread init struct rt thread thread,const char...
RT Thread學習記錄12 郵箱的使用
1.郵箱的工作機制 rt thread作業系統的郵箱用於執行緒間通訊 郵箱具有資料互動功能,但互斥量 訊號量等ipc沒有資料互動功能 特點是開銷比較低,效率較高。郵箱中的每一封郵件只能容納 固定的4位元組內容 針對32位處理系統,指標的大小即為4個位元組,所以一封郵件恰好能夠容納乙個指標 執行緒或中...