.NET DynamicMethod Поток безопасно?
-
05-07-2019 - |
Вопрос
Если я напишу DynamicMethod с ILGenerator, а код, который я вывожу, является потокобезопасным, получится ли полученный делегат потокобезопасным?
Меня беспокоит то, что IL компилируется при первом запуске метода. Если это так, что произойдет, если какой-то другой поток попытается запустить делегат во время его компиляции?
Решение
Это не имеет никакого значения со стандартным делегатом. Они оба присутствуют в виде MSIL где-то и JIT скомпилируйте их, когда захотите.
Как только вы получите его в форме делегата, это будет фрагмент кода, который вы можете вызвать. Это все, что вам действительно нужно знать. Реализация .NET, в которой вы работаете (Rotor, Mono, Microsoft one), должна оградить вас от любых соображений по этому поводу, иначе это ошибка в реализации.