RT-Thread 內核小細節

RTT內核小細節

  1. 信號量
  2. 郵箱
  3. 信號
  4. 調度
  5. 中斷鎖
  6. 事件

1. 信號量:

信號量是根據初始值分層的,例如信號量創建時初始值爲2,那麼可以在不釋放信號量的情況下被獲取兩次此信號量。釋放一次信號量信號量的值(semaphore->value)就會加一,獲取一次信號量的值就會減掉一,爲零則不能獲取,被掛起。
在這裏插入圖片描述

2.郵箱:

使用if(rt_mb_recv(&mb,(rt_uint32_t*)&str,RT_WAITING_FOREVER == RT_EOK))函數讀取郵件,讀完不會取走郵件。
在這裏插入圖片描述
在這裏插入圖片描述

3. 信號:

目的是使線程接收到信號軟中斷,中斷處理;
同樣一個信號只能軟中斷一次

4 .調度:

調度關閉分層次
比如說:如果前面進去了4關閉調度,應該已經是第4層了;你就是退出一次,仍然在第3層,仍會在臨界區,不會調度,如果要實現退出至少要保證,進去和出去的次數一樣

5.中斷鎖:

防止當前線程被打斷關閉完中斷鎖一定要記得恢復,而且時間要短,並且不可以在沒有恢復中斷的時候再次關閉中斷鎖。

6.事件

事件的使用比較靈活:可以實現邏輯與和邏輯或,同樣不要忘了,事件可以設置接收完後是否清除事件標誌

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章