下面開講一下rtt(rtthread的簡稱,全稱打著實在太長了)的干貨,
線程是rtt的最基本的單位,管理的核心,像是信號量,事件,消息,郵箱,還有內存管理其它都是以線程為單位展開的,你可以類比在裸奔年代的函數,函數的出現就是為了以其為單位對于軟件需要實現的功能而存在的,其實線程的本質也是就是函數,但是她加入很多你以前可能沒考慮過的因素,因為實時性的要求:
比如,你在裸奔時代如何實現搶占一個函數的處理,最終返回該函數呢,答案很簡單:中斷嘛,那再進一步,如何搶斷中斷的任務呢,答案也可以脫口而出:嵌套中斷嘛,那我就剩下最后一個問題,那你能把所有函數都放在中斷中,并按照嵌套中斷管理排好順序讓他們執(zhí)行嗎?
我想針對這個問題還是有些困難的,因為中斷機制有其特殊性,在于她的中斷方式,還有中斷嵌套的管理問題,你可以無限制進行嵌套嗎?這肯定也是不行,就算是處理器允許,你想想你得要個多大棧才進行壓棧處理啊。太不現實。
但是線程的出現就是為了解決這個實時性的問題,她可以實現函數級的搶占,不存在嵌套的問題。因為每個線程都有自己的棧,所以你也不要擔心嵌套問題帶來的棧溢出。
如何理解一個線程的內部運行機制:其實你可以考慮,假如合成你如何實現函數級的搶占功能。等你實現了也就理解了。