Page 1 of 1

Gilt volatile.read () immer noch, wenn es in einem Getter verschachtelt ist?

Posted: 24 Feb 2025, 10:08
by Anonymous
Betrachten Sie diesen Code in C#: < /p>

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 
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?