记一次 .NET 某设备监控系统 死锁分析
原文中文,约4600字,阅读约需11分钟。发表于: 。一:背景 1. 讲故事上周看了一位训练营朋友的dump,据朋友说他的程序卡死了,看完之后发现是一例经典的死锁问题,蛮有意思,这个案例算是学习 .NET高级调试 入门级的案例,这里和大家分享一下。二:WinDbg 分析 1. 程序为什么会卡死因为是窗体程序,所以看主线程的线程栈就好了,如果卡在 用户态 那这个问题相对容易解决,如果卡在 内核态 这个问题就比较复杂了,需要开启 WinDbg 的本机内核...
本文通过WinDbg分析了一个死锁问题的案例,发现主线程在GetAlarmCount()方法的lock处等待,持有lock的线程是24号线程。死锁的本质是锁的使用不当,没有遵循锁的尽早释放原则。文章总结了关系型数据库在锁的使用方面做得很好,值得研究和学习。