使用相互排斥 Mutex 來解決競爭冒險。
就相當(dāng)于將共享的全局變量放到一個保險柜里,當(dāng)任務(wù)1獲取此變量時,先申請一把鑰匙打開保險柜,對共享資源進(jìn)行訪問。當(dāng)任務(wù)2也想訪問共享資源時,由于申請不到鑰匙,就訪問不了共享資源,只能等待,等待到任務(wù)1釋放鑰匙,才可以獲取。示例以下:
第一步(創(chuàng)建一把鑰匙):
SemaphoreHandle_t xHandler; 創(chuàng)建Handler
xHandler = xSemaphoreCreateMutex(); 創(chuàng)建一個MUTEX(鑰匙)
第二步(獲取鑰匙):
xSemaphoreTake(xHanlder, timeout); 指定時間內(nèi)獲取信號量 返回pdPASS, 或者pdFAIL。
第三步(釋放鑰匙):
xSemaphoreGive(xHandler); 釋放
共享的資源被鎖在了一個箱子里,只有一把鑰匙,有鑰匙的任務(wù)才能對改資源進(jìn)行訪問。



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