RT_Thread应用4—线程管理

第十七章 线程管理

前言

RT-Thread 线程管理的主要功能是对线程进行管理和调度,系统中总共存在两类线程,分别是系统线程和用户线程
在这里插入图片描述
在这里插入图片描述

  1. RT-Thread的线程调度器是抢占式的,主要的工作就是从就绪线程列表中查找最高优先级线程,保证最高优先级的线程能够被运行,最高优先级的任务一旦就绪,总能得到CPU 的使用权。

  2. 当一个运行着的线程使一个比它优先级高的线程满足运行条件,当前线程的 CPU 使用权就被剥夺了,或者说被让出了,高优先级的线程立刻得到了CPU 的使用权。

  3. 如果是中断服务程序使一个高优先级的线程满足运行条件,中断完成时,被中断的线程挂起,优先级高的线程开始运行。

  4. 当调度器调度线程切换时,先将当前线程上下文保存起来,当再切回到这个线程时,线程调度器将该线程的上下文信息恢复。

一、线程基本概念

在这里插入图片描述

  • RT-Thread 的线程模块可以给用户提供多个线程,实现了线程之间的切换和通信,帮助用户管理业务程序流程。这样用户可以将更多的精力投入到业务功能的实现中。
  • RT-Thread 中的线程是抢占式调度机制,同时支持时间片轮转调度方式。
  • 高优先级的线程可打断低优先级线程,低优先级线程必须在高优先级线程阻塞或结束
    后才能得到调度。

二、线程调度器基本概念

线程调度的原则:是一旦线程状态发生了改变,并且当前运行的线程优先级小于优先级队列组中线程最高优先级时,立刻进行线程切换(除非当前系统处于中断处理程序中或禁止线程切换的状态)。
在这里插入图片描述
在这里插入图片描述

三、线程状态概念

RT-Thread 系统中的每一线程都有多种运行状态。系统初始化完成后,创建的线程就可以在系统中竞争一定的资源,由内核进行调度。

  • 线程不在就绪列表中:包含线程被挂起、 线程被延时、线程正在等待信号量、读写队列或者等待读写事件等。

在这里插入图片描述

四、线程状态迁移

在这里插入图片描述
在这里插入图片描述

五、常用的线程函数

在这里插入图片描述
需要线程的挂起与恢复函数理由:

在这里插入图片描述

六、线程的设计要点

RT-Thread 中程序运行的上下文包括:

  • 中断服务函数。
  • 普通线程。
  • 空闲线程。
    在这里插入图片描述
    线程执行时间例子:
    在这里插入图片描述
    对于事件 A 对应的服务线程 Ta,系统要求的实时响应指标是 10ms,而 Ta 的最大运行时间是 1ms,那么 10ms 就是线程 Ta 的周期了,1ms 则是线程的运行时间,简单来说线程 Ta 在 10ms 内完成对事件 A 的响应即可。此时,系统中还存在着以 50ms 为周期的另一线程 Tb,它每次运行的最大时间长度是100us。在这种情况下,即使把线程 Tb 的优先级抬到比 Ta 更高的位置,对系统的实时性指标也没什么影响,因为即使在 Ta 的运行过程中,Tb 抢占了 Ta 的资源,等到 Tb 执行完毕,消耗的时间也只不过是 100us,还是在事件 A 规定的响应时间内(10ms),Ta 能够安全完成对事件 A 的响应。但是假如系统中还存在线程 Tc,其运行时间为 20ms,假如将 Tc 的优先级设置比 Ta 更高,那么在 Ta 运行的时候,突然间被 Tc 打断,等到 Tc 执行完毕,那 Ta 已经错过对事件 A(10ms)的响应了,这是不允许的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值