任务间通信的基本知识
1. 信號量:信號量其實就是一種通過數字大小來實現限制資源使用的一種機制,設置信號量其實就是設置資源最大可以允許多少個任務同時訪問同一個資源,通過信號量pend和post操作即信號量變量的加減實現任務控制。
2. 互斥鎖:互斥鎖就是同一時間只有一個任務可以占有資源,當有其他任務要訪問資源的時候就會將這個任務掛起,放到event的等待列表中,當占有資源的任務釋放掉鎖的時候,等待任務才可以占有資源并且上鎖,為了防止優先級的翻轉,使用了優先級繼承的機制,就是把占有資源的任務的優先級提升一下比要使用資源的任務的優先級高。
3. 隊列:隊列就是取一段內存用于存放消息,這個消息是一個地址,真正的消息內容是存放在這個地址中,這樣的話可以就可以實現真正的任務間通信,將數據從一個任務傳到另一個任務,而不像信號量和互斥鎖一樣僅僅是一個限制作用。隊列使用要注意,如果多個任務在等待不同的消息的話,有可能會出現不同任務獲得了不是自己想要的信息并且將消息從隊列中去除掉了,所以使用的時候需要注意。
4. 消息:消息其實是隊列的一種特殊情況,為了節省資源,之前也有講到,如果消息數量一定的話同一時間只有一個消息使用,那么采用消息機制更簡單,同樣實現了數據的傳輸功能。消息的使用也同樣要注意,pend和post的使用,因為如果有多個任務同時使用的話,就會存在是否是當前任務想要的信息,如果不是的話有可能把別的任務的消息給去處并釋放掉了,所以使用時需要注意。
總結
以上是生活随笔為你收集整理的任务间通信的基本知识的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OS_CORE.C(2)
- 下一篇: OS_CORE.C(3)