如果可能的话,我更喜欢继续使用关键段而不是其他同步原语,但如果必要的话,我可以切换(例如,以获得超时功能)。
如果工具/方法能够在IDE之外的运行时工作,那就更好了,因为这很难按需复制死锁。在我能够在IDE中重现死锁的罕见情况下,如果我尝试暂停以开始调试,IDE只会坐在那里什么也不做,并且永远无法到达可以查看线程或调用堆栈的状态。但我可以重置正在运行的程序。
更新:在这种情况下,我只处理一个关键段和2个线程,因此这可能不是锁定顺序问题。我相信有一次不正确的嵌套尝试跨两个不同的线程进入锁定,导致死锁。