RT Thread學習記錄2 執行緒的建立

2021-10-06 20:05:48 字數 1323 閱讀 5363

在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個位元組,所以一封郵件恰好能夠容納乙個指標 執行緒或中...