程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> RT-Thread的線程(任務)處理【RT-Thread學習筆記 2】,rt-thread學習筆記

RT-Thread的線程(任務)處理【RT-Thread學習筆記 2】,rt-thread學習筆記

編輯:關於C語言

RT-Thread的線程(任務)處理【RT-Thread學習筆記 2】,rt-thread學習筆記


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對應動態定義方式。

  • 使用靜態定義方式時,必須先定義靜態的線程控制塊,並且定義好堆棧空間,然後調用rt_thread_init來完成線程的初始化工作。采用這種 方式,線程控制塊和堆棧占用的內存會放在RW段,這段空間在編譯時就已經確定,它不是可以動態分配的,所以不能被釋放,而只能使用 rt_thread_detach函數將該線程控制塊從對象管理器中脫離。
  • 使用動態定義方式rt_thread_create時,RT-Thread會動態申請線程控制塊和堆棧空間。在編譯時,編譯器是不會感知到這段空 間的,只有在程序運行時,RT-Thread才會從系統堆中申請分配這段內存空間,當不需要使用該線程時,調用rt_thread_delete函數就會 將這段申請的內存空間重新釋放到內存堆中。

這兩種方式各有利弊,靜態定義方式會占用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之後不會釋放空間


國產RTOS,比如都江堰實時操作系統?RT-Thread?等,除了這兩個,還有其他的?有專門做RTOS的公司?

RT-Thread RTOS   
這是一款由國內RT-Thread工作室開發的開源實時操作系統。起初RT-Thread是一個實時的內核(全搶占優先級調度,調度器時間復雜度O(1)),但在發展過程中,RT-Thread實時操作系統得到了來自全國嵌入式開發工程師的鼎力支持,為RT-Thread添磚加瓦,現在它已慢慢變成一個完善的、全功能的操作系統:文件系統,網絡協議棧,圖形界面組件。。。只有您想不到,沒有您做不到:RT-Thread是一個平台,您可以把您的創意匯聚在一起,小平台大社區,RT-Thread的開發人員就在您的身邊。
 

有關rt-thread的編程語言,指教

我覺得有兩種可能:
1. 存放結構體內容的空間的首字節地址
2. 結構體的各成員均有各自的地址,這些地址是放在一塊連續的內存中,結構體的指針存放的是這塊連續的內存的首字節地址。
其實吧,對於這個結構體指針裡面的具體內容不是那麼重要,只要了解這種指針怎麼用就行了,希望采納
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved