我有一个 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
是否真的代表了我的非托管函数所花费的时间,或者它实际上是否在做其他导致线程等待同步的事情?