我有一些代码,我无法正确理解。问题是程序是多线程的,其中有一些代码应该同步,所以我写了这个:
lock (lockObject)
{
if (!Monitor.TryEnter(lockObject))
Monitor.Wait(lockObject);
//do stuff...
Monitor.PulseAll(lockObject);
}
Monitor.Exit(lockObject);
我遇到的问题是,在某个时间点,所有线程似乎都在睡觉——有人能说出原因吗?该程序一直在无休止地运行,几乎没有消耗cpu,但没有完成任何工作——在跟踪程序时,我发现在某些时候没有线程处于活动状态,但其中很多都在休眠。我知道大部分错误(如果是开发人员 - 总是)位于显示器前面 0.5m 处 - 但我自己无法弄清楚......也许在几分钟内;)
有人可以向我解释一下 - 在此先感谢。