使用相互排斥 Mutex 來解決競爭冒險(xiǎn)。
就相當(dāng)于將共享的全局變量放到一個(gè)保險(xiǎn)柜里,當(dāng)任務(wù)1獲取此變量時(shí),先申請(qǐng)一把鑰匙打開保險(xiǎn)柜,對(duì)共享資源進(jìn)行訪問。當(dāng)任務(wù)2也想訪問共享資源時(shí),由于申請(qǐng)不到鑰匙,就訪問不了共享資源,只能等待,等待到任務(wù)1釋放鑰匙,才可以獲取。示例以下:
第一步(創(chuàng)建一把鑰匙):
SemaphoreHandle_t xHandler; 創(chuàng)建Handler
xHandler = xSemaphoreCreateMutex(); 創(chuàng)建一個(gè)MUTEX(鑰匙)
第二步(獲取鑰匙):
xSemaphoreTake(xHanlder, timeout); 指定時(shí)間內(nèi)獲取信號(hào)量 返回pdPASS, 或者pdFAIL。
第三步(釋放鑰匙):
xSemaphoreGive(xHandler); 釋放
共享的資源被鎖在了一個(gè)箱子里,只有一把鑰匙,有鑰匙的任務(wù)才能對(duì)改資源進(jìn)行訪問。
審核編輯:劉清
-
信號(hào)源
+關(guān)注
關(guān)注
5文章
499瀏覽量
45801
原文標(biāo)題:任務(wù)與任務(wù)之間通訊二(共享全局變量)
文章出處:【微信號(hào):硬件會(huì),微信公眾號(hào):硬件會(huì)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
最全的硬件工程師筆試試題集
LoRa設(shè)備發(fā)射和接收的信號(hào)相互干擾怎么辦
RK3568驅(qū)動(dòng)指南|第三篇-并發(fā)與競爭-第19章 并發(fā)與競爭實(shí)驗(yàn)

OptiSystem應(yīng)用:EDFA中離子-離子相互作用效應(yīng)
ADS8881電容之間是如何相互影響的?
離子束與材料的相互作用

通過外部多路選擇開關(guān)來動(dòng)態(tài)切換不同采樣目標(biāo)時(shí),ADS125H02的內(nèi)部數(shù)字濾波器是否會(huì)導(dǎo)致采樣的結(jié)果會(huì)相互影響?
labview中浮點(diǎn)數(shù)與十六進(jìn)制字符串相互轉(zhuǎn)化
高壓驗(yàn)電器的工作原理與結(jié)構(gòu)解析
數(shù)字量與模擬量的相互聯(lián)系與用途
變頻器一拖二如何相互切換
三相互感電表反轉(zhuǎn)怎么改線方便
BLDC實(shí)戰(zhàn)項(xiàng)目之電磁學(xué),你跟上了嗎?

從山川到海洋,BIG WALNUT大核桃三防手機(jī)陪伴你的每一步冒險(xiǎn)

評(píng)論