Применяется ли volatile.read (), если он вложен в Getter?C#

Место общения программистов C#
Anonymous
 Применяется ли volatile.read (), если он вложен в Getter?

Сообщение Anonymous »

Рассмотрим этот код в C#: < /p>

Код: Выделить всё

private int _backingField;

public int SomeNumber => Volatile.Read(ref _backingField);

public void Test_1()
{
var someNumber = Volatile.Read(ref _backingField);

// do A

if (someNumber == 5)
{
// do B
}
}

public void Test_2()
{
var someNumber = SomeNumber;

// do A

if (someNumber == 5)
{
// do B
}
}
< /code>
Я знаю, что современные процессоры, чтобы повысить производительность, делают много оптимизации под капотом. Одна из этих оптимизаций может включать перемещение назначения в Momenumber 
после // выполнить линию , если нет volatile.read () .
Однако мой вопрос заключается в том, являются ли методы test_1 и test_2 идентичны. Тот факт, что летучая чтение test_2 вложено в геттере, аннулирует преимущества нестабильного чтения?


Подробнее здесь: https://stackoverflow.com/questions/794 ... n-a-getter

Вернуться в «C#»