我很好奇如何实现一些低级.NET类。我以Monitor类为例。但是,我似乎无法在GitHub上找到它。我最接近的是Monitor.cs中的coreclr。但是,此文件中的代码仅引用extern
方法[MethodImplAttribute(MethodImplOptions.InternalCall)]
以获取实质性内容。
这是我被卡住的地方。我在哪里可以找到这些内部方法的实现?
答案 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}})