Pregunta

Si escribo un DynamicMethod con un ILGenerator y el código que imprimo es seguro para subprocesos, ¿el delegado resultante sería seguro para subprocesos?

Mi preocupación es que la IL se compila la primera vez que se ejecuta el método. Si eso es cierto, ¿qué sucede si algún otro hilo intenta ejecutar el delegado mientras se está compilando?

¿Fue útil?

Solución

No hace ninguna diferencia con un delegado estándar. Ambos están presentes como MSIL en algún lugar y JIT compílelos cuando quiera.

Una vez que lo tenga en forma de delegado, es un cuerpo de código al que puede llamar. Eso es todo lo que realmente necesitas saber. La implementación de .NET en la que se está ejecutando (Rotor, Mono, Microsoft one) debería protegerlo de cualquier consideración al respecto, de lo contrario, es un error en la implementación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top