1. 程式人生 > >Freertos-事件標誌組,消息隊列,信號量,二值信號量,互斥信號量

Freertos-事件標誌組,消息隊列,信號量,二值信號量,互斥信號量

text pri 消息隊列 解決 消息 無需 出現 任務 一個

任務間的通信和同步機制

在裸機編程時,使用全局變量的確比較方便,但是在加上 RTOS 後就是另一種情況了。 使用全局變量相比事件標誌組主要有如下三個問題:

1、使用事件標誌組可以讓 RTOS 內核有效地管理任務,而全局變量是無法做到的,任務的超時等機制需
要用戶自己去實現。
2、使用了全局變量就要防止多任務的訪問沖突,而使用事件標誌組則處理好了這個問題,用戶無需擔心。
3、使用事件標誌組可以有效地解決中斷服務程序和任務之間的同步問題。

事件標誌組事件標誌組是實現多任務同步的有效機制之一。 每創建一個事件標誌組,用戶可以使用的事件標誌是
24 個。

消息隊列重要的通信機制 。個或者多個任務可以通過 RTOS 內核服務從隊列中得到消息。通常,先進入消息隊列的消息先傳
給任務,也就是說,任務先得到的是最先進入到消息隊列的消息,即先進先出的原則(FIFO),FreeRTOS
的消息隊列支持 FIFO 和 LIFO 兩種數據存取方式。


信號量:計數信號量 + 二值信號量

計數信號量任務間的同步和資源共享機制 。

平時使用信號量主要實現以下兩個功能:
1、兩個任務之間或者中斷函數跟任務之間的同步功能,這個和前面章節講解的事件標誌組是類似的。其實就是共享資源為 1 的時候。
2、多個共享資源的管理,就像機房上機的例子 。(多個資源可以被多個任務訪問的情況,是什麽情況呢?)

二值信號量:當共享資源為一個時,和多值信號量一樣,和事件標誌組類似,只是它最多有24的標誌(相當於創建24個二值信號量)。

互斥信號量:,通二值信號量類似,但是它有優先級繼承(Priority inheritance)的功能,這樣就有效地防止出現優先級翻轉的問題 。



Freertos-事件標誌組,消息隊列,信號量,二值信號量,互斥信號量