2-1RT-Thread线程管理-笔记
其中系统线程由内核创建,如main函数和空闲线程都属于系统线程,而用户线程是由应用程序所创建的。
对于资源较大的MCU可以适当设计较大的线程栈,也可以在初始化时设置一个具体的数值,如1K或2K字节。然后在face中用命令查看线程的运行状态,根据实际情况进行调整。
线程运行的过程中,同一时间内只允许一个线程在处理器中运行。从运行的过程上划分,线程有多种不同的运行状态,如初始状态、挂起状态、就绪状态等。状态之间的切换如图所示。
一个线程要成为可执行的对象,必须操作系统内核为它创建一个线程。可以使用RT thread init接口初始化一个静态线程,或使用RT thread create创建一个动态线程。静态线程与动态线程的区别是,静态线程由用户分配空间与线程句柄,而动态线程自动从动态内存堆上分配,栈空间与线程句柄。因此在创建动态线程前需使能系统动态堆。
线程创建后处于初始状态,需使用RT thress start up使线程进入就绪状态。当处于就绪状态的线程被调度器调用时,就进入运行状态。当线程不需要使用或运行出错时,我们可以使用RT thread detach函数将静态线程脱离,或使用RT thread delay函数将动态线程删除。此时线程处于关闭状态,真正的删除动作需要下一次执行空闲线程时,由空闲线程完成最后的线程删除动作。需要注意的是,线程本身不应调用这两个接口函数,即要脱离或删除某个线程,应在其他线程中完成。