FreeRTOS信號量
二值信號量通常用于互斥訪問或同步皿桑,二值信號量和互斥信號量非常類似毫目,但是還是有一些細微的差別, 互斥信號量擁有優(yōu)先級繼承機制诲侮, 二值信號量沒有優(yōu)先級繼承镀虐。 因此二值信號另更適合用于同步(任務(wù)與任務(wù)或任務(wù)與中斷的同步)。二值信號量其實就是一個只有一個隊列項的隊列沟绪,這個特殊的隊列要么是滿的刮便,要么是空的。
互斥信號量其實就是一個擁有優(yōu)先級繼承的二值信號量绽慈,在同步的應(yīng)用中(任務(wù)與任務(wù)或中斷與任務(wù)之間的同步)二值信號量最適合恨旱。互斥信號量適合用于那些需要互斥訪問的應(yīng)用中坝疼。在互斥訪問中互斥信號量相當(dāng)于一個鑰匙搜贤,當(dāng)任務(wù)想要使用資源的時候就必須先獲得這個鑰匙,當(dāng)使用完資源以后就必須歸還這個鑰匙钝凶,這樣其他的任務(wù)就可以拿著這個鑰匙去使用資源仪芒。
? ?? 互斥信號量可以可以降低優(yōu)先級翻轉(zhuǎn)帶來的影響,但是互斥信號量不能用于中斷服務(wù)函數(shù):
? ?? 1耕陷、互斥信號量有優(yōu)先級繼承的機制桌硫,所以只能用在任務(wù)中,不能用于中斷服務(wù)函數(shù)啃炸。
? ?? 2铆隘、中斷服務(wù)函數(shù)中不能因為要等待互斥信號量而設(shè)置阻塞時間進入阻塞態(tài)。
互斥信號量的獲取和釋放與二值信號量和計數(shù)型信號量一樣南用!