Compartir a través de


Subprocesos de notificaciones en la API de generación de perfiles

Actualización: noviembre 2007

En la mayoría de los casos, el subproceso que genera un evento ejecuta también las notificaciones. Tales notificaciones (por ejemplo, FunctionEnter y FunctionLeave) no necesitan proporcionar el ThreadIDexplícito. Además, el generador de perfiles puede decidir utilizar almacenamiento local de subproceso para almacenar y actualizar sus bloques de análisis, en lugar de indizar los bloques de análisis en almacenamiento global, en función del ThreadID del subproceso afectado.

Tenga en cuenta que estas devoluciones de llamada no se serializan. Los usuarios deben proteger su código creando estructuras de datos seguras para subprocesos y bloqueando el código del generador de perfiles donde sea necesario para evitar el acceso paralelo desde varios subprocesos. Por consiguiente, en ciertos casos puede recibir una secuencia poco habitual de devoluciones de llamada. Por ejemplo, suponga que una aplicación administrada está generando dos subprocesos que está ejecutando código idéntico. En este caso, es posible recibir un evento ICorProfilerCallback::JITCompilationStarted para alguna función de un subproceso y una devolución de llamada FunctionEnter del otro subproceso antes de recibir la devolución de llamada ICorProfilerCallback::JITCompilationFinished. En este caso, el usuario recibirá una devolución de llamada FunctionEnter para una función que puede no haberse compilado totalmente Just-In-Time (JIT) todavía.

Vea también

Otros recursos

Características comunes en la API de generación de perfiles

Información general sobre la generación de perfiles