當前位置:編程學習大全網 - 編程軟體 - free rtos 遞歸互斥信號量有什麽用處

free rtos 遞歸互斥信號量有什麽用處

意義:混用遞歸鎖和非遞歸鎖,可能會造成程序的死鎖。

MutexLock?mutex;

void?foo()

{

mutex.lock();

//?do?something1

mutex.unlock();

}

void?bar()

{

mutex.lock();

//?do?something2

foo();

mutex.unlock();

}

上面的代碼反映了壹種問題:

a\foo()函數即有可能獨自調用也可能作為bar()函數中的子函數壹起調用;

b\do something1和do something2都有是要保護的臨界區.

上面簡單的情況下可以用代碼技巧避免死鎖。而對於如遞歸二叉樹排序的問題如果妳比較厲害好像也可以把遞歸函數寫成for循環的形式.但對於兩個函數來回調用的時候,就必須使用遞歸互斥信號量了.

參考文獻:線程同步之利器(1)——可遞歸鎖與非遞歸鎖網頁鏈接

需要註意的是,以上代碼值得是Linix.回到FreeRTOS,

遞歸互斥信號量就是用遞歸函數裏面有需要保護的變量時使用的.依然以如遞歸二叉樹排序為例.

但FreeRTOS遞歸互斥信號量沒辦法實現上文所說交叉調用.

  • 上一篇:紅綠燈的plc簡單編程是什麽?
  • 下一篇:數控車床編程實例
  • copyright 2024編程學習大全網