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...