Z tego co rozumiem, do 'lotny' modyfikator w C# ma dwa skutki:Przykład "lotności" uniemożliwiający optymalizację kompilatora w języku C#?
- Wstawia płoty jako niezbędne dla procesora docelowego
- Zapobiega pewne optymalizacje kompilatora
na x86/amd64, (1) jest nieistotny. Te procesory nie wymagają płotów w przypadku lotnej semantyki. (jednak ia64 jest inny).
Tak więc, jesteśmy w dół (2). Ale na przykładach, które próbowałem, lotność nie ma znaczenia dla zespołu jit-ted.
Moje pytanie brzmi: czy możesz podać przykład próbki kodu C#, w której dodanie modyfikatora "lotnego" na polu powoduje, że inny kod zestawu jit-ted?
Fantastyczny, dokładnie tego szukałem! Tutaj lotny rzeczywiście powoduje inny kod zespołu. –
Jeśli ktoś jest ciekawy, bez lotnego modyfikatora, wartość pola zostanie zapisana w pamięci podręcznej. A gdy wartość znajduje się w rejestrze, pętla rdzenia nigdy nie "zauważy" aktualizacji wykonanej przez inny rdzeń. –