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

RT-Thread 線程優先級搶佔實驗:高優先級任務搶佔 CPU 驗證

     編輯:關於C語言

實驗目的

驗證 RT-Thread 調度器:就緒態線程中優先級高者先執行;高優線程就緒時,低優線程讓出 CPU。

線程定義

void thread1_entry(void* p) { // 優先級 10
    rt_uint32_t cnt=0;
    while(1) {
        rt_thread_delay(3*RT_TICK_PER_SECOND);
        rt_kprintf("thread1 count=%d\n", cnt++);
    }
}
void thread2_entry(void* p) { // 優先級 10
    rt_uint32_t i=0;
    while(1) {
        rt_thread_delay(RT_TICK_PER_SECOND);
        rt_kprintf("thread2 tick=%d\n", rt_tick_get());
    }
}

啟動代碼

void rt_thread_test(void) {
    rt_thread_init(&thread1, "t1", thread1_entry, RT_NULL, stack1, 512, 10, 10);
    rt_thread_startup(&thread1);
    rt_thread_init(&thread2, "t2", thread2_entry, RT_NULL, stack2, 512, 10, 10);
    rt_thread_startup(&thread2);
}

現象分析

  • 兩線程同優先級 (10),按時間片輪轉。
  • thread1 延遲 3 tick,thread2 延遲 1 tick。
  • 輸出規律:thread1 每打印一次,thread2 打印三次(第三次被 thread1 醒來搶佔打斷)。

結論

調度器嚴格遵循優先級與時間片輪轉,高優先級線程能及時搶佔 CPU,實時性符合預期。

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