【发布时间】:2009-06-26 07:32:30
【问题描述】:
我正在调试一个死锁问题,调用堆栈显示线程正在等待某些事件。
代码使用临界区作为同步原语我认为这里有一些问题。 此外,调试器指向某个其他线程拥有的临界区,但锁定计数为 -2。 根据我的理解 lock count>0 表示临界区被一个或多个线程锁定。
那么有没有可能我正在查看正确的关键部分,这可能是死锁的罪魁祸首。
在什么情况下临界区可以有负锁计数?
【问题讨论】:
-
Raymond Chen 刚刚写了一篇关于离开 CS 的次数多于进入 CS 的后果的帖子。并且前三个 cmets 也值得一读……blogs.msdn.com/oldnewthing/archive/2009/06/19/9777996.aspx
-
@eran 的链接已失效。不过在这里找到了:devblogs.microsoft.com/oldnewthing/20090619-00/?p=17823
-
谢谢@SamWhan。太糟糕了,当他们搬到新站点时,他们放弃了 cmets,现在我想知道我提到的前三个 cmets 是怎么说的:)
标签: deadlock