執行緒讓出實驗 RT Thread學習筆記 4

2021-07-09 14:36:51 字數 1184 閱讀 2139

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掛起或...