原创 RT-Thread入门学习笔记_4——线程状态切换

2020-2-20 14:45 15014 13 2 分类: MCU/ 嵌入式 文集: RT-Thread入门学习文档
笔记内容参考RT-Thread内核入门指南教程视频:https://www.bilibili.com/video/av79513262?p=4

下图转自教程视频,笔者经消化吸收做出以下整理并画出流程图,若理解有误请各位大哥哥大姐姐不吝赐教!!

线程工作状态由五部分组成,分别为:初始状态、就绪状态、运行状态、挂起状态、关闭状态。了解线程状态的切换将有助于我们更好掌握实时操作系统工作流程。

线程初始状态为动态线程、静态线程创建[1]。线程创建后,系统判断是否开始运行(startup),如果不是则继续等待,如果是则各线程进入到就绪状态,也就是我们俗称的“排队等待”。系统继续判断是否调用挂起函数,如果有则线程进入挂起状态,如果没有则继续判断CPU是否空闲,若否则线程进入挂起状态,若空闲则线程进入运行状态。此时,线程中的事务将开始执行(例如主函数)。

执行的事务分为顺序结构及循环结构,循环结构是指线程中事务不断循环运行,此时需要相应API函数参与使CPU跳出循环。系统判断线程中的事务是否有挂起进程命令(例如延时函数),若有则线程进入挂起状态,若无则继续判断是否有退出线程函数(例如exit(),break),若有则系统进入关闭状态(即常说的程序已全部运行结束),若无则回到就绪状态,开始执行下一个进程。

线程进入挂起状态则判断是否清除就绪线程,若是则清除线程并进入关闭状态,若否则回到就绪状态循环往复直至所有线程运行结束。

 

[1]:关于什么是动态线程、静态线程及其他们创建步骤,可查阅本人第三篇学习笔记。

链接:https://mbb.eet-china.com/blog/3887794-413965.html


文章评论0条评论)

登录后参与讨论
我要评论
0
13
关闭 站长推荐上一条 /2 下一条