Il thread .NET DynamicMethod è sicuro?
-
05-07-2019 - |
Domanda
Se scrivo un DynamicMethod con un ILGenerator e il codice che ho emesso è thread-safe il delegato risultante sarebbe thread-safe?
La mia preoccupazione è che IL venga compilato la prima volta che viene eseguito il metodo. Se questo è vero, cosa succede se qualche altro thread tenta di eseguire il delegato durante la compilazione?
Soluzione
Non fa alcuna differenza con un delegato standard. Sono entrambi presenti come MSIL da qualche parte e JIT compilali quando vuoi.
Una volta che lo hai in forma delegata, è un corpo di codice che potresti chiamare. Questo è tutto ciò che devi veramente sapere. L'implementazione di .NET in cui stai eseguendo (Rotor, Mono, Microsoft one) dovrebbe proteggerti da ogni considerazione a riguardo, altrimenti è un bug nell'implementazione.