使用相互排斥 Mutex 來解決競爭冒險。
就相當于將共享的全局變量放到一個保險柜里,當任務1獲取此變量時,先申請一把鑰匙打開保險柜,對共享資源進行訪問。當任務2也想訪問共享資源時,由于申請不到鑰匙,就訪問不了共享資源,只能等待,等待到任務1釋放鑰匙,才可以獲取。示例以下:
第一步(創建一把鑰匙):
SemaphoreHandle_t xHandler; 創建Handler
xHandler = xSemaphoreCreateMutex(); 創建一個MUTEX(鑰匙)
第二步(獲取鑰匙):
xSemaphoreTake(xHanlder, timeout); 指定時間內獲取信號量 返回pdPASS, 或者pdFAIL。
第三步(釋放鑰匙):
xSemaphoreGive(xHandler); 釋放
共享的資源被鎖在了一個箱子里,只有一把鑰匙,有鑰匙的任務才能對改資源進行訪問。
審核編輯:劉清
-
信號源
+關注
關注
5文章
499瀏覽量
45795
原文標題:任務與任務之間通訊二(共享全局變量)
文章出處:【微信號:硬件會,微信公眾號:硬件會】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
最全的硬件工程師筆試試題集
LoRa設備發射和接收的信號相互干擾怎么辦
OptiSystem應用:EDFA中離子-離子相互作用效應
ADS8881電容之間是如何相互影響的?
離子束與材料的相互作用

通過外部多路選擇開關來動態切換不同采樣目標時,ADS125H02的內部數字濾波器是否會導致采樣的結果會相互影響?
labview中浮點數與十六進制字符串相互轉化
高壓驗電器的工作原理與結構解析
數字量與模擬量的相互聯系與用途
變頻器一拖二如何相互切換
三相互感電表反轉怎么改線方便
BLDC實戰項目之電磁學,你跟上了嗎?

從山川到海洋,BIG WALNUT大核桃三防手機陪伴你的每一步冒險

評論