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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top