针对临界区的死锁分析,比较简单 !cs xxxxx ,然后通过owningthread 来找到对应的线程,并查看调用栈。
原因大致有以下几种:
1、owningthread 忘了释放锁, 建议使用 autolock
2、线程中使用了嵌套锁
3、owningthread 被动的原因无法释放锁,比如
1)、使用开源库,异常时直接ExitThread。
2)、使用了 __try __except 捕获了异常, 导致锁未释放
3)、使用了开源库,抛出异常,未调用autolock的析构函数
具体可参考个人网站: http://91dengdeng.cn/?cat=1