Pytania otagowane jako volatile

Volatile to kwalifikator używany do definiowania obszaru przechowywania danych (obiektu, pola, zmiennej, parametru), który „może się zmieniać samodzielnie”, uniemożliwiając w ten sposób niektóre optymalizacje generatora kodu. W niektórych, ale nie we wszystkich językach, które rozpoznają ten kwalifikator, dostęp do takich danych jest bezpieczny wątkowo.

8
Potrzeba zmiennego modyfikatora w podwójnie sprawdzanym blokowaniu w .NET
Wiele tekstów mówi, że przy implementacji podwójnie zaznaczonego blokowania w .NET pole, na którym blokujesz, powinno mieć zastosowany modyfikator volatile. Ale dlaczego dokładnie? Biorąc pod uwagę następujący przykład: public sealed class Singleton { private static volatile Singleton instance; private static object syncRoot = new Object(); private Singleton() {} public static …
85 c#  singleton  volatile 


3
Czy kompilator może stale składać zmienną lokalną?
Rozważ ten prosty kod: void g(); void foo() { volatile bool x = false; if (x) g(); } https://godbolt.org/z/I2kBY7 Widać, że ani gccnie clangoptymalizuje potencjalnego połączenia z g. W moim rozumieniu jest to poprawne: maszyna abstrakcyjna ma zakładać, że volatilezmienne mogą się zmieniać w dowolnym momencie (z powodu np. Mapowania …



1
Czy ta implementacja C ++ AtomicInt jest poprawna?
Przesłanka: Pracuję w środowisku ARM (prawie bez systemu), w którym nawet nie mam C ++ 11 (z std::atomic<int>) dostępnym, więc proszę unikać odpowiedzi typu „ po prostu użyj standardowego C ++std::atomic<int> ”: nie mogę . Czy ta implementacja ARM AtomicInt jest poprawna? (załóżmy, że architektura ARM to ARMv7-A ) Czy …
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.