api: rt_thread_yield
執行緒函式中呼叫,本執行緒釋放mcu。如果此時有別的相同優先順序的任務整處於等待狀態,將獲得mcu使用權。
執行緒讓出就是給os增加乙個任務排程的機會。
建立兩個執行緒,觀察他們的結果:
//啟動他們:執行緒讓出試驗
void yield_test1(void*parameter)
}void yield_test2(void*parameter)
}
//看見兩個執行緒輪流輸出:執行緒讓出實驗,兩個執行緒優先順序一樣。否則在給一次排程機會也是高優先順序的任務使用mcu
tid2 = rt_thread_create("
yield1
",yield_test1,rt_null,2048,10,5
);
if(tid2 !=rt_null)
rt_thread_startup(tid2);
tid2 = rt_thread_create("
yield2
",yield_test2,rt_null,2048,10,5
);
if(tid2 !=rt_null)
rt_thread_startup(tid2);
\ | /
- rt - thread operating system
/ | \ 2.0.0 build aug 29 2014
thread test1 count:0
thread test2 count:0
thread test1 count:1
thread test2 count:1
thread test1 count:2
thread test2 count:2
thread test1 count:3
thread test2 count:3
thread test1 count:4
thread test2 count:4
thread test1 count:5
thread test2 count:5
……..
如果沒有執行緒讓出的操作,情況將是等乙個執行緒時間片結束之後,才會輪到另乙個執行緒輸出。不會是輪流輸出了
RTT例程練習 1 3 執行緒讓出
rtt 支援相同優先順序,而ucosii 不支援。如果乙個執行緒不呼叫rt thread delay 來讓出排程器,那麼它就會一直執行,其它執行緒永遠處於就緒態。而相同優先順序的執行緒,在初始化或建立時還定義了其單次執行的最長的時間片,強迫其讓出排程器。這裡,使用rt thread yield 也可...
RTT例程練習 1 3 執行緒讓出
rtt 支援相同優先順序,而ucosii 不支援。如果乙個執行緒不呼叫rt thread delay 來讓出排程器,那麼它就會一直執行,其它執行緒永遠處於就緒態。而相同優先順序的執行緒,在初始化或建立時還定義了其單次執行的最長的時間片,強迫其讓出排程器。這裡,使用rt thread yield 也可...
rtthread 主動掛起執行緒
程式清單 建立 啟動 掛起 恢復執行緒 這個例子會建立兩個動態執行緒 tid1和tid2有相同的優先順序,tid1執行緒中因無delay延時,start後tid1始終處於ready態,也正是因為這個前提,tid2才能夠成功將tid1掛起。現象 每隔20s 200ms 100 tid1被tid2掛起或...