Gilt volatile.read () immer noch, wenn es in einem Getter verschachtelt ist?
Posted: 24 Feb 2025, 10:08
Betrachten Sie diesen Code in C#: < /p>
nach der // do einer -Zeile verwendet, wenn nein volatile.read () verwendet wird.
Meine Frage ist jedoch, ob die Methoden test_1 und test_2 identisch sind. Ist die Tatsache, dass die flüchtige Lektüre von test_2 in einem Getter verschachtelt ist, die Vorteile des flüchtigen Lesens?
Code: Select all
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>
Ich bin mir bewusst, dass moderne CPUs, um die Leistung zu verbessern, viele Optimierungen unter der Motorhaube durchführen. Eine dieser Optimierungen könnte das Verschieben der Zuordnung in Somenumber
Meine Frage ist jedoch, ob die Methoden test_1 und test_2 identisch sind. Ist die Tatsache, dass die flüchtige Lektüre von test_2 in einem Getter verschachtelt ist, die Vorteile des flüchtigen Lesens?