ThreadX 的抢占式阀值调度

下面用通俗易懂的方式讲解一下ThreadX 的抢占式阀值调度(Preemption-Threshold)


1. 什么是抢占?

在操作系统中,抢占指的是高优先级的任务可以中断正在运行的低优先级任务,强制 CPU 切换到高优先级任务执行。这保证了重要的任务能及时被处理。

2. 普通抢占调度(优先级调度)

ThreadX 默认情况下是基于优先级的抢占调度:

  • 优先级数字越小,优先级越高。
  • 当有更高优先级的线程准备好时,正在运行的低优先级线程会被立即中断,切换到高优先级线程。

3. 抢占式阀值(Preemption-Threshold)是什么?

抢占式阀值是 ThreadX 提供的一种调度增强功能,允许你给线程设置一个“阀值”,让某些高优先级线程暂时不能抢占当前线程,只有“高到一定程度”的线程才能抢占。

比如:

  • 线程 A 的优先级是 5
  • 设置了抢占阀值为 3

此时,只有优先级 小于等于 3 (比阀值更高)的线程才能抢占线程 A。
而优先级为 4 的线程(虽然比 A 高)却不能抢占,必须等 A 自己主动让出 CPU。

4. 举个通俗的例子

想象办公室里有很多员工(线程),每个人都有职位(优先级),老板(优先级最高)随时可以叫停任何人的工作(抢占)。

但如果你是部门经理(线程),你和老板说:“除非是老板或副老板找我,其他人不要打扰我!”
这就是你设置了一个抢占阀值,只有职位比副老板还高的人才能打断你工作,其他人只能等你忙完。

5. 为什么要这样做?

有时候,某些任务希望能在几乎不被打扰的情况下把事情做完,但又不能完全禁止抢占(因为有紧急情况要处理)。
抢占阀值就是一种平衡:

  • 降低被抢占的频率,提高关键代码的执行完整性。
  • 保证最紧急的任务还是可以及时抢占。

6. 总结一句话

抢占阀值就是给线程设个“只允许特别重要的人打扰我”的门槛,避免被频繁抢占但保留应急抢占的能力。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值