處理器: Blackfin Visual DSP++5.0
from: VisualDSP++5.0 Help Manual
VDK5.0可以使用Mutex需要注意以下幾點:
1、Mutex可以在任何線程創(chuàng)建。
2、Mutex可以被某個線程擁有,或者不被任何線程擁有。
3、一旦Mutex被一個線程擁有之后,其他線程還要使用這個Mutex的話必須等待,直到已經使用Mutex的線程release掉這個mutex
4、如果一個線程Acquire了一個Mutex,還沒有Relase的話,如果這個線程被銷毀了,會引起線程異常。系統(tǒng)崩潰,調試的話可以看到匯編進入__KernelPanic。
5、如果一個線程已經擁有了一個Mutex還沒有釋放,那么線程重入后,再執(zhí)行到Acquire Mutex的時候會直接過去,因為這個線程已經擁有了這個Mutex。
__KernelPanic處理
1、如果不小心程序發(fā)生了__KernelPanic的話(調試時表現(xiàn)在調試程序停止,匯編語句會跳轉到__KernelPanic函數(shù),如果系統(tǒng)脫機運行的話就會死機),可以通過查詢變量獲取錯誤信息。
2、查詢方法:在變量查看窗口輸入VDK::g_KernelPanicError即可查看到錯誤的枚舉類型,根據(jù)錯誤枚舉值的命名就可以看出為什么發(fā)生這個錯誤了。
3、如果不是VDK線程錯誤,可以通過Vdsp的菜單欄的工具查看錯誤信息: Register->Core->Status->Squece Status 里面的EXCAUSE變量的值,再查詢幫助可以查出這個值對應什么錯誤。
上述的Mutex沒有被釋放但是線程已經銷毀導致的錯誤是:0x80000040 (kInvalidMutexOwner) |