Насколько я понимаю, модификатор 'volatile' в C # имеет два эффекта:
- Вставляет ограждения по мере необходимости для целевого процессора
- Предотвращает некоторые оптимизации компилятора
На x86 / amd64 (1) не имеет значения. Эти процессоры не требуют ограждений для изменчивой семантики. (ia64 отличается, однако.)
Итак, мы до (2). Но для примеров, которые я пробовал, volatile не имеет никакого значения для Jit-Ted сборки.
Мой вопрос таков: можете ли вы привести пример кода на C #, в котором добавление модификатора 'volatile' к полю приводит к разному Jit-ассемблерному коду?