RTA_OS内核源码解析 3.9-任务激活
文章目录
一、激活简介
一般将Task从挂起态切换到就绪态的操作称之为激活,未启用激活队列的前提下,无法对已经处于激活态或运行态的Task再次激活,对已经进入等待态的ECCTask可以调用激活接口进行激活,但是正常项目中不会这么做,因为毫无意义,原因后面会进行介绍。
与设置事件接口类似,任务激活接口也分为同步激活和异步激活两种类型,且RTA_OS提供这两种类型的接口,分别是同步激活任务接口(Os_ActivateTask()
)和异步激活任务接口(Os_ActivateTaskKL()
),从其接口的代码实现来看,这两个接口的功能以及应用差异主要有以下几点:
- 同步激活任务接口主要被用户进行调用,而异步激活任务接口主要被系统内部进行调用的,主要原因就是异步激活任务接口内部没有实现中断管理,因此需要依赖操作系统内部的中断管理;
- 与同步设置事件一样,所谓同步的意义是指,在某一个Task调用同步激活任务接口(
Os_ActivateTask()
)去激活另一个Task时,如果激活的Task优先级高于当前运行的Task则会直接触发任务调度,而异步接口则不会触发任务调度。