ILGenerator を使用して DynamicMethod を記述し、出力するコードがスレッド セーフである場合、結果のデリゲートはスレッド セーフになりますか?
私の懸念は、メソッドが初めて実行されたときにILがコンパイルされることです。それが本当なら、コンパイル中に他のスレッドがデリゲートを実行しようとするとどうなりますか?
ILGenerator を使用して DynamicMethod を記述し、出力するコードがスレッド セーフである場合、結果のデリゲートはスレッド セーフになりますか?
私の懸念は、メソッドが初めて実行されたときにILがコンパイルされることです。それが本当なら、コンパイル中に他のスレッドがデリゲートを実行しようとするとどうなりますか?
標準のデリゲートとは何の違いもありません。それらは両方ともどこかにMSILとして存在し、 JITは必要に応じてそれらをコンパイルします。
デリゲート形式にすると、呼び出すことができるコードの本体になります。あなたが本当に知る必要があるのはそれだけです。実行している.NET(Rotor、Mono、Microsoftのもの)の実装は、これに関する考慮事項から保護する必要があります。そうしないと、実装のバグになります。