rt-thread 线程管理
RT-Thread 线程管理
线程控制块
线程创建
rt_thread_create/init()
。线程的创建分为动态线程和静态线程。静态线程的特点是,在编译时,线程的栈地址以及占空间是确定的。动态线程的栈空间是从动态堆内存中申请到的。
线程栈
栈是一种先进后出的数据结构。在进行线程切换时,需要有单独的栈空间来保存当前线程的信息:入参,线程中的局部变量,返回地址。根据栈指针(sp)的指向方式,线程栈分为满栈和空栈(递增栈和递减栈)。这里以 cortex-v7 为例,栈指针从高地址向低地址。
调度器
初始化
使用接口 rt_system_scheduler_init();
对调度器进行初始化。
线程切换
- 获取最高优先级
- 判断当前线程的状态
- 当前线程的优先级低于最高优先级
- 当前线程的优先级等于最高优先级
- 当前线程的优先级高于最高优先级
调度器会根据时间表,选择就绪态最高优先级的线程切换为运行态
rt-thread 线程管理
https://github.com/liukangcc/2020/12/09/rt-thread 线程管理/