rt-thread 线程管理

RT-Thread 线程管理

线程控制块

线程创建

rt_thread_create/init()。线程的创建分为动态线程和静态线程。静态线程的特点是,在编译时,线程的栈地址以及占空间是确定的。动态线程的栈空间是从动态堆内存中申请到的。

线程栈

栈是一种先进后出的数据结构。在进行线程切换时,需要有单独的栈空间来保存当前线程的信息:入参,线程中的局部变量,返回地址。根据栈指针(sp)的指向方式,线程栈分为满栈和空栈(递增栈和递减栈)。这里以 cortex-v7 为例,栈指针从高地址向低地址。

image-20210830135244697

调度器

初始化

使用接口 rt_system_scheduler_init(); 对调度器进行初始化。

线程切换

  1. 获取最高优先级
  2. 判断当前线程的状态
    • 当前线程的优先级低于最高优先级
    • 当前线程的优先级等于最高优先级
    • 当前线程的优先级高于最高优先级

调度器会根据时间表,选择就绪态最高优先级的线程切换为运行态


rt-thread 线程管理
https://github.com/liukangcc/2020/12/09/rt-thread 线程管理/
作者
Keaun
发布于
2020年12月9日
许可协议