使用相互排斥 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文章
560瀏覽量
47749
原文標(biāo)題:任務(wù)與任務(wù)之間通訊二(共享全局變量)
文章出處:【微信號(hào):硬件會(huì),微信公眾號(hào):硬件會(huì)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
【「Linux 設(shè)備驅(qū)動(dòng)開發(fā)(第 2 版)」閱讀體驗(yàn)】Linux內(nèi)核開發(fā)基礎(chǔ)
飛凌嵌入式ElfBoard-文件I/O的了解探究之競爭冒險(xiǎn)
新紫光集團(tuán)的核心競爭力是什么?
探索時(shí)鐘發(fā)生器的競爭優(yōu)勢(shì)
使用相互排斥Mutex來解決競爭冒險(xiǎn)
評(píng)論