1、信號(hào)量用于控制對(duì)共享資源的訪(fǎng)問(wèn)
舉一個(gè)很常見(jiàn)的例子,某個(gè)停車(chē)場(chǎng)有100個(gè)停車(chē)位,這 100 個(gè)停車(chē)位大家都可以用,對(duì)于大家來(lái)說(shuō)這 100 個(gè)停車(chē)位就是共享資源。假設(shè)現(xiàn)在這個(gè)停車(chē)場(chǎng)正常運(yùn)行,你要把車(chē)停到這個(gè)這個(gè)停車(chē)場(chǎng)肯定要先看一下現(xiàn)在停了多少車(chē)了?還有沒(méi)有停車(chē)位?當(dāng)前停車(chē)數(shù)量就是一個(gè)信號(hào)量,具體的停車(chē)數(shù)量就是這個(gè)信號(hào)量值,當(dāng)這個(gè)值到 100 的時(shí)候說(shuō)明停車(chē)場(chǎng)滿(mǎn)了。停車(chē)場(chǎng)滿(mǎn)的時(shí)你可以等一會(huì)看看有沒(méi)有其他的車(chē)開(kāi)出停車(chē)場(chǎng),當(dāng)有車(chē)開(kāi)出停車(chē)場(chǎng)的時(shí)候停車(chē)數(shù)量就會(huì)減一,也就是說(shuō)信號(hào)量減一,此時(shí)你就可以把車(chē)停進(jìn)去了,你把車(chē)停進(jìn)去以后停車(chē)數(shù)量就會(huì)加一,也就是信號(hào)量加一。這就是一個(gè)典型的使用信號(hào)量進(jìn)行共享資源管理的案例,在這個(gè)案例中使用的就是計(jì)數(shù)型信號(hào)量。
再看另外一個(gè)案例:使用公共電話(huà),我們知道一次只能一個(gè)人使用電話(huà),這個(gè)時(shí)候公共電話(huà)就只可能有兩個(gè)狀態(tài):使用或未使用,如果用電話(huà)的這兩個(gè)狀態(tài)作為信號(hào)量的話(huà),那么這個(gè)就是二值信號(hào)量。
信號(hào)量用于控制共享資源訪(fǎng)問(wèn)的場(chǎng)景相當(dāng)于一個(gè)上鎖機(jī)制,代碼只有獲得了這個(gè)鎖的鑰匙才能夠執(zhí)行。
2、信號(hào)量的用于任務(wù)同步
任務(wù)與任務(wù)或中斷與任務(wù)之間的同步。
在執(zhí)行中斷服務(wù)函數(shù)的時(shí)候可以通過(guò)向任務(wù)發(fā)送信號(hào)量來(lái)通知任務(wù)它所期待的事件發(fā)生了,當(dāng)退出中斷服務(wù)函數(shù)以后在任務(wù)調(diào)度器的調(diào)度下同步的任務(wù)就會(huì)執(zhí)行。
在編寫(xiě)中斷服務(wù)函數(shù)的時(shí)候我們都知道一定要快進(jìn)快出,中斷服務(wù)函數(shù)里面不能放太多的代碼,否則的話(huà)會(huì)影響的中斷的實(shí)時(shí)性。裸機(jī)編寫(xiě)中斷服務(wù)函數(shù)的時(shí)候一般都只是在中斷服務(wù)函數(shù)中打個(gè)標(biāo)記,然后在其他的地方根據(jù)標(biāo)記來(lái)做具體的處理過(guò)程。在使用 RTOS 系統(tǒng)的時(shí)候我們就可以借助信號(hào)量完成此功能,當(dāng)中斷發(fā)生的時(shí)候就釋放信號(hào)量,中斷服務(wù)函數(shù)不做具體的處理。具體的處理過(guò)程做成一個(gè)任務(wù),這個(gè)任務(wù)會(huì)獲取信號(hào)量,如果獲取到信號(hào)量就說(shuō)明中斷發(fā)生了,那么就開(kāi)始完成相應(yīng)的處理,這樣做的好處就是中斷執(zhí)行時(shí)間非常短。
-
嵌入式
+關(guān)注
關(guān)注
5186文章
20146瀏覽量
328820 -
信號(hào)
+關(guān)注
關(guān)注
11文章
2902瀏覽量
79670 -
FreeRTOS
+關(guān)注
關(guān)注
14文章
497瀏覽量
66354
發(fā)布評(píng)論請(qǐng)先 登錄
FreeRTOS串口中斷接收不定長(zhǎng)的數(shù)據(jù)與二值信號(hào)量的使用
FreeRTOS信號(hào)量使用教程
FreeRTOS信號(hào)量的使用與實(shí)例
轉(zhuǎn):freeRTOS信號(hào)量學(xué)習(xí)
有關(guān)FreeRTOS中信號(hào)量和計(jì)數(shù)信號(hào)量在使用過(guò)程中需要注意的細(xì)節(jié)
FreeRTOS信號(hào)量介紹
Linux信號(hào)量(2):POSIX 信號(hào)量
FreeRTOS信號(hào)量 & ESP32實(shí)戰(zhàn)
FreeRTOS 隊(duì)列 信號(hào)量 互斥量
FreeRTOS高級(jí)篇6---FreeRTOS信號(hào)量分析
FreeRTOS系列第20篇---FreeRTOS信號(hào)量API函數(shù)
在Arduino IDE中使用FreeRTOS信號(hào)量
freeRTOS中最常用到的信號(hào)量有哪些

FreeRTOS信號(hào)量介紹
評(píng)論