下面开讲一下rtt(rtthread的简称,全称打着实在太长了)的干货,
线程是rtt的最基本的单位,管理的核心,像是信号量,事件,消息,邮箱,还有内存管理其它都是以线程为单位展开的,你可以类比在裸奔年代的函数,函数的出现就是为了以其为单位对于软件需要实现的功能而存在的,其实线程的本质也是就是函数,但是她加入很多你以前可能没考虑过的因素,因为实时性的要求:
比如,你在裸奔时代如何实现抢占一个函数的处理,最终返回该函数呢,答案很简单:中断嘛,那再进一步,如何抢断中断的任务呢,答案也可以脱口而出:嵌套中断嘛,那我就剩下最后一个问题,那你能把所有函数都放在中断中,并按照嵌套中断管理排好顺序让他们执行吗?
我想针对这个问题还是有些困难的,因为中断机制有其特殊性,在于她的中断方式,还有中断嵌套的管理问题,你可以无限制进行嵌套吗?这肯定也是不行,就算是处理器允许,你想想你得要个多大栈才进行压栈处理啊。太不现实。
但是线程的出现就是为了解决这个实时性的问题,她可以实现函数级的抢占,不存在嵌套的问题。因为每个线程都有自己的栈,所以你也不要担心嵌套问题带来的栈溢出。
如何理解一个线程的内部运行机制:其实你可以考虑,假如合成你如何实现函数级的抢占功能。等你实现了也就理解了。