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