一、線程管理
RT_Thread線程管理主要是實現線程管理和調度,線程分為用戶線程和系統線程。RT_Thread的線程調度器是搶占式的,尋找就緒狀態最高優先級線程。
線程管理的API函數
創建線程函數
rt_thread_t rt_thread_create(
const char *name, //線程名稱
void (*entry)(void *parameter), //線程入口函數
void *parameter, //線程參數
rt_uint32_t stack_size, //線程棧大小
rt_uint8_t priority, //線程優先級
rt_uint32_t tick); //線程時間片
創建刪除函數
rt_err_t rt_thread_delete(rt_thread_t thread); //線程控制塊
初始化線程函數
rt_err_t rt_thread_init(
struct rt_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_err_t rt_thread_detach(rt_thread_t thread); //線程控制塊
啟動線程函數
rt_err_t rt_thread_startup(rt_thread_t thread); //線程控制塊
獲取當前線程函數
rt_thread_t rt_thread_self(void);
線程讓出處理器資源函數
rt_err_t rt_thread_yield(void);
調用該函數之后,線程將會讓出處理器資源,將自己放置在就緒隊列鏈表的尾部,激活線程調度器的上下文切換。
線程延時控制函數
毫米延時函數
rt_err_t rt_thread_mdelay(rt_int32_t ms);
系統節拍延時函數
rt_err_t rt_thread_delay(rt_tick_t tick);
線程掛起函數
rt_err_t rt_thread_suspend(rt_thread_t thread); //線程控制塊
線程恢復函數
rt_err_t rt_thread_resume(rt_thread_t thread); //線程控制塊
線程控制函數
rt_err_t rt_thread_control(
rt_thread_t thread, //線程控制塊
int cmd, //控制命令
void *arg); //控制參數
設置和刪除空閑鉤子函數
設置空閑鉤子函數
rt_err_t rt_thread_idle_sethook(void (*hook)(void)); //設置鉤子函數
刪除空閑鉤子函數
rt_err_t rt_thread_idle_delhook(void (*hook)(void)); //刪除鉤子函數
設置調度器鉤子函數
void rt_scheduler_sethook(void (*hook)(rt_thread_t from, rt_thread_t to));
from:系統切換出控制塊指針
to:系統切換到控制塊指針