首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

RT-Thread 線程主動讓出 CPU 實驗:rt_thread_yield() 驗證同優先級輪轉

     編輯:關於C語言

API 介紹

rt_thread_yield():當前線程主動放棄剩餘時間片,觸發一次調度。若有同優先級就緒線程,將獲得 CPU。

實驗代碼

void yield_test1(void* p) {
    rt_uint32_t cnt=0;
    while(1) { rt_kprintf("t1:%d\n", cnt++); rt_thread_yield(); }
}
void yield_test2(void* p) {
    rt_uint32_t cnt=0;
    while(1) { rt_kprintf("t2:%d\n", cnt++); rt_thread_yield(); }
}
// 啟動
rt_thread_t t1 = rt_thread_create("t1", yield_test1, RT_NULL, 2048, 10, 5);
rt_thread_t t2 = rt_thread_create("t2", yield_test2, RT_NULL, 2048, 10, 5);
if(t1) rt_thread_startup(t1);
if(t2) rt_thread_startup(t2);

輸出現象

t1:0
t2:0
t1:1
t2:1
t1:2
t2:2
...

兩線程嚴格交替輸出,證明 yield() 立即觸發上下文切換。

對比

若無 yield(),需等待時間片耗盡才切換,輸出將呈現批次式(連續多行同一線程)。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved