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