处理器: Blackfin Visual DSP++5.0
from: VisualDSP++5.0 Help Manual
VDK5.0可以使用Mutex需要注意以下几点:
1、Mutex可以在任何线程创建。
2、Mutex可以被某个线程拥有,或者不被任何线程拥有。
3、一旦Mutex被一个线程拥有之后,其他线程还要使用这个Mutex的话必须等待,直到已经使用Mutex的线程release掉这个mutex
4、如果一个线程Acquire了一个Mutex,还没有Relase的话,如果这个线程被销毁了,会引起线程异常。系统崩溃,调试的话可以看到汇编进入__KernelPanic。
5、如果一个线程已经拥有了一个Mutex还没有释放,那么线程重入后,再执行到Acquire Mutex的时候会直接过去,因为这个线程已经拥有了这个Mutex。
__KernelPanic处理
1、如果不小心程序发生了__KernelPanic的话(调试时表现在调试程序停止,汇编语句会跳转到__KernelPanic函数,如果系统脱机运行的话就会死机),可以通过查询变量获取错误信息。
2、查询方法:在变量查看窗口输入VDK::g_KernelPanicError即可查看到错误的枚举类型,根据错误枚举值的命名就可以看出为什么发生这个错误了。
3、如果不是VDK线程错误,可以通过Vdsp的菜单栏的工具查看错误信息: Register->Core->Status->Squece Status 里面的EXCAUSE变量的值,再查询帮助可以查出这个值对应什么错误。
上述的Mutex没有被释放但是线程已经销毁导致的错误是:0x80000040 (kInvalidMutexOwner) |