Zgodnie z cppreferencją większość zastosowań volatilesłowa kluczowego powinna być przestarzała w C ++ 20. Jaka jest wada volatile? A jakie jest alternatywne rozwiązanie, gdy nie używasz volatile?
Zgodnie z cppreferencją większość zastosowań volatilesłowa kluczowego powinna być przestarzała w C ++ 20. Jaka jest wada volatile? A jakie jest alternatywne rozwiązanie, gdy nie używasz volatile?
Odpowiedzi:
Krzesło ewolucji języka komitetu c ++ dobrze mówi o tym, dlaczego.
Krótkie podsumowanie, wiele volatileusuwanych miejsc nie miało żadnego zrozumiałego znaczenia i po prostu spowodowało zamieszanie.
volatileNIE są przestarzałe, ponieważ są przydatne (np. W kodzie, który bezpośrednio ładuje lub przechowuje z określonych lokalizacji pamięci, np. W sterownikach urządzeń). Sporo „przestarzałych zastosowań” wiąże się ze zdolnością do korzystania z funkcji, których zbyt wielu programistów używa - niepoprawnie - jako środka do uzyskania atomowego dostępu o zmiennym dostępie . Teraz biblioteka C ++ (od C ++ 11) zapewnia poprawny sposób zapewnienia dostępu atomowego do zmiennych, więc sensowne jest zniechęcanie programistów do niewłaściwego używania,volatilegdy celem jest dostęp atomowy.