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?
Betrachten Sie diesen Code in C#: < /p>
[code]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 [/code] 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?