.NET的Monitor类的源代码在哪里?

时间:2017-01-10 15:07:53

标签: .net .net-core

我很好奇如何实现一些低级.NET类。我以Monitor类为例。但是,我似乎无法在GitHub上找到它。我最接近的是Monitor.cs中的coreclr。但是,此文件中的代码仅引用extern方法[MethodImplAttribute(MethodImplOptions.InternalCall)]以获取实质性内容。

这是我被卡住的地方。我在哪里可以找到这些内部方法的实现?

1 个答案:

答案 0 :(得分:6)

这些在CLR中实现为FCalls

Here&{39}} Monitor相关内部电话的列表:

FCFuncStart(gMonitorFuncs)
    FCFuncElement("Enter", JIT_MonEnter)
    FCFuncElement("ReliableEnter", JIT_MonReliableEnter)
    FCFuncElement("ReliableEnterTimeout", JIT_MonTryEnter)
    FCFuncElement("Exit", JIT_MonExit)
    FCFuncElement("ObjWait", ObjectNative::WaitTimeout)
    FCFuncElement("ObjPulse", ObjectNative::Pulse)
    FCFuncElement("ObjPulseAll", ObjectNative::PulseAll)
    FCFuncElement("IsEnteredNative", ObjectNative::IsLockHeld)
FCFuncEnd()

因此,如果你想查找Enter方法的定义,你必须寻找JIT_MonEnter(在这种情况下,它是一个JIT助手{ {3}})