RTT例程練習 1 3 執行緒讓出

2021-06-12 16:02:40 字數 899 閱讀 7334

rtt 支援相同優先順序,而ucosii 不支援。

如果乙個執行緒不呼叫rt-thread_delay() 來讓出排程器,那麼它就會一直執行,其它執行緒永遠處於就緒態。

而相同優先順序的執行緒,在初始化或建立時還定義了其單次執行的最長的時間片,強迫其讓出排程器。

這裡,使用rt_thread_yield();也可讓出排程器。

#include rt_thread_t tid1 = rt_null;

rt_thread_t tid2 = rt_null;

static void thread1_entry(void* parameter)

}static void thread2_entry(void* parameter)

}/* 兩者的優先順序必須相同,否則乙個執行緒讓出排程器之後進入就緒佇列,

其優先順序仍比另乙個高,會繼續執行,使得另乙個執行緒始終無法得到

執行。 */

/*@}*/

輸出結果為:

\ | /

- rt - thread operating system

/ | \ 1.1.0 build aug 10 2012

thread1: count = 0

thread1: count = 1

thread2: count = 0

thread1: count = 2

thread2: count = 1

thread1: count = 3

thread2: count = 2

thread1: count = 4

thread2: count = 3

thread2: count = 4

RTT例程練習 1 3 執行緒讓出

rtt 支援相同優先順序,而ucosii 不支援。如果乙個執行緒不呼叫rt thread delay 來讓出排程器,那麼它就會一直執行,其它執行緒永遠處於就緒態。而相同優先順序的執行緒,在初始化或建立時還定義了其單次執行的最長的時間片,強迫其讓出排程器。這裡,使用rt thread yield 也可...

RTT例程練習 1 1 動態執行緒建立,刪除

建立兩個動態執行緒,thread2 執行4s後刪除thread1。這裡兩個都為動態執行緒,所謂動態執行緒即在堆中動態建立,刪除之後也從ram中消失。區別於靜態執行緒。由於是動態,所以需開啟 define rt using heap include rt thread t tid1 rt null r...

RTT例程練習 1 1 動態執行緒建立,刪除

建立兩個動態執行緒,thread2 執行4s後刪除thread1。這裡兩個都為動態執行緒,所謂動態執行緒即在堆中動態建立,刪除之後也從ram中消失。區別於靜態執行緒。由於是動態,所以需開啟 define rt using heap include rt thread t tid1 rt null r...