我正在用 C# 创建一些示例程序来演示 !SOS.syncblk、!SOSEX.dlk 和其他可用于 WinDbg 的扩展的用法。
我有所有类型的死锁示例(锁定语句、ReaderWiterLock、ReaderWriterLockSlim 和 CriticalSection),但没有薄锁。
创建 thinlock 的代码是什么?
请您参考如下方法:
thinlock 是一种在被访问时没有冲突的锁。 也许最简单的演示 thinlock 的程序是
class Program
{
private static string l = "Demo lock resource";
static void Main()
{
lock (l)
{
Thread.Sleep(Timeout.Infinite);
}
}
}
在 WinDbg 中它是这样显示的:
0:004> .loadby sos clr
0:004> !dumpheap -thinlock
Address MT Size
02782448 67c4acc0 50 ThinLock owner 1 (0065cd98) Recursive 0
Found 1 objects.
dd可以显示对象头和方法表:
0:004> dd 02782448-4 L2
02782444 80000001 67c4acc0
