我有一个C#程序,它调用托管C ++包装器,后者又调用非托管C ++代码。当我执行此代码时,我可以看到线程正在等待方法DoNDirectCall__PatchGetThreadCall
上的同步的时间段。堆栈跟踪看起来有点像
- Csharp.Code.MyClass in MyC#.dll
-> Managed.C++.Interface in MyManagedC++.dll
-> Managed.C++.Internal in MyManagedC++.dll
-> DoNDirectCall__PatchGetThreadCall in clr.dll
因此,我调用的非托管代码在线程堆栈中根本没有显示出来。有谁知道DoNDirectCall__PatchGetThreadCall
是否实际上代表了我的非托管函数所花费的时间,还是它实际上正在做其他导致线程等待同步的事情?