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

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Gilt volatile.read () immer noch, wenn es in einem Getter verschachtelt ist?

by Anonymous » 24 Feb 2025, 10:08

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?

Top