一、线程管理
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:系统切换到控制块指针