RT-Thread中使用線程這個概念,而不是任務。兩者相似,我在這裡把他的線程當作任務來理解了
1、任務處理:
動態任務相關API
創建任務:rt_thread_create函數,創建任務之後會返回rt_thread_t類型的任務ID
創建之後啟動任務:rt_thread_startup
刪除任務:rt_thread_delete
任務延時函數:rt_thread_delay 延時時候,任務處於suspend狀態
任務運行情況可用finish模塊,在電腦終端查看
2、動態創建線程和靜態創建線程
RT-Thread中支持靜態和動態兩種定義方式。用線程來舉例的話,rt_thread_init對應靜態定義方式,rt_thread_create對應動態定義方式。
這兩種方式各有利弊,靜態定義方式會占用RW/ZI空間,但是不需要動態分配內存,運行時效率較高,實時性較好。 動態方式不會占用額外的RW/ZI空間,占用空間小,但是運行時需要動態分配內存,效率沒有靜態方式高。
靜態創建線程代碼:
創建線程:rt_thread_init
啟動線程:rt_thread_startup
脫離線程:rt_thread_detach
//靜態創建線程 result = rt_thread_init(&thread1, //線程handle "static", //線程名 rt_init_thread_entry, //線程入口函數 RT_NULL, //線程入口參數 &thread1_stack[0], //線程棧地址 sizeof(thread1_stack), //線程棧大小 6, //線程優先級 10); //線程時間片
動態創建線程代碼:
創建線程:rt_thread_create
啟動線程:rt_thread_startup
線程啟動成功後,當OS調度開始,即可被OS調度執行。
tid = rt_thread_create("init", rt_init_thread_entry, RT_NULL, 2048, 10, 5); if (tid != RT_NULL) rt_thread_startup(tid);
空間使用比較
動態創建的線程,delete之後會釋放出空間
靜態創建的線程,detach之後不會釋放空間
RT-Thread RTOS
這是一款由國內RT-Thread工作室開發的開源實時操作系統。起初RT-Thread是一個實時的內核(全搶占優先級調度,調度器時間復雜度O(1)),但在發展過程中,RT-Thread實時操作系統得到了來自全國嵌入式開發工程師的鼎力支持,為RT-Thread添磚加瓦,現在它已慢慢變成一個完善的、全功能的操作系統:文件系統,網絡協議棧,圖形界面組件。。。只有您想不到,沒有您做不到:RT-Thread是一個平台,您可以把您的創意匯聚在一起,小平台大社區,RT-Thread的開發人員就在您的身邊。
我覺得有兩種可能:
1. 存放結構體內容的空間的首字節地址
2. 結構體的各成員均有各自的地址,這些地址是放在一塊連續的內存中,結構體的指針存放的是這塊連續的內存的首字節地址。
其實吧,對於這個結構體指針裡面的具體內容不是那麼重要,只要了解這種指針怎麼用就行了,希望采納