RTT內核小細節
- 信號量
- 郵箱
- 信號
- 調度
- 中斷鎖
- 事件
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.事件
事件的使用比較靈活:可以實現邏輯與和邏輯或,同樣不要忘了,事件可以設置接收完後是否清除事件標誌 。