ICorProfilerCallback::JITCachedFunctionSearchStarted 方法
通知探查器已开始搜索某个以前使用本机映像生成器 (NGen.exe) 编译的函数。
HRESULT JITCachedFunctionSearchStarted(
[in] FunctionID functionId,
[out] BOOL *pbUseCachedFunction);
参数
functionId
[in] 正在对其执行搜索的函数的 ID。pbUseCachedFunction
[out] 如果执行引擎应使用函数的缓存版本(如果可用),则为 true;否则为 false。 如果该值为 false,则执行引擎将对该函数进行 JIT 编译,而不是使用非 JIT 编译的版本。
备注
在 .NET Framework 2.0 版中,并不会对常规 NGen 映像中的所有函数都进行 JITCachedFunctionSearchStarted 和 ICorProfilerCallback::JITCachedFunctionSearchFinished Method 回调。 只有为探查器优化的 NGen 映像才会为映像中的所有函数生成回调。 但是,由于此过程会产生附加开销,因此只有在探查器要使用这些回调强制对某个函数进行实时 (JIT) 编译时,才应请求探查器优化的 NGen 映像。 否则,探查器应使用惰性策略来收集函数信息。
探查器必须支持所分析的应用程序的多个线程同时调用同一个方法的情况。 例如,线程 A 调用 JITCachedFunctionSearchStarted,探查器通过将 pbUseCachedFunction设置为 FALSE 进行响应,以强制 JIT 编译。 线程 A 然后调用 ICorProfilerCallback::JITCompilationStarted 和 ICorProfilerCallback::JITCompilationFinished。
现在,线程 B 为该同一函数调用 JITCachedFunctionSearchStarted。 虽然探查器已声明其对该函数进行 JIT 编译的意图,但由于在探查器对线程 A 的 JITCachedFunctionSearchStarted 调用做出响应之前,线程 B 已发送回调,因此探查器将收到第二次回调。 线程执行调用的顺序取决于线程的调度方式。
当探查器收到重复的回调时,必须为所有的重复回调将 pbUseCachedFunction 引用的值设置为同一个值。 也就是说,当多次使用同一个 functionId 值对 JITCachedFunctionSearchStarted 进行调用时,探查器必须每次都做出相同的响应。
要求
**平台:**请参见 .NET Framework 系统要求。
**头文件:**CorProf.idl、CorProf.h
**库:**CorGuids.lib
**.NET Framework 版本:**4、3.5 SP1、3.5、3.0 SP1、3.0、2.0 SP1、2.0