C# 如何锁定对象,使其显示在的输出中!垃圾堆-thinlock?

C# 如何锁定对象,使其显示在的输出中!垃圾堆-thinlock?,c#,windbg,C#,Windbg,我正在用C语言创建一些示例程序来演示!SOS.syncblk!SOSEX.dlk和其他可用于WinDbg的扩展 我有所有类型的死锁锁语句、ReaderWiterLock、ReaderWriterLockSlim和CriticalSection的示例,但没有thinlocks 创建thinlock的代码是什么?thinlock是一个在被访问时没有冲突的锁。 也许演示thinlock最简单的程序是 class Program { private static string l = "Demo

我正在用C语言创建一些示例程序来演示!SOS.syncblk!SOSEX.dlk和其他可用于WinDbg的扩展

我有所有类型的死锁锁语句、ReaderWiterLock、ReaderWriterLockSlim和CriticalSection的示例,但没有thinlocks


创建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

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