М>>>зачем понадобились volatile-переменные?
ЕМ>>Для реализации некоторых легковесных методов синхронизации. Например, там, где циклически выполняется группа операций, и этот цикл нужно останавливать по внешнему сигналу. Использовать там средства ОС избыточно — по уши хватит и volatile-переменных.
fk0> OMG! Полярный песец!
fk0> Volatile не является барьером. Не атомарно. И из него никаких толком алгоритмов не построить, даже
fk0>алгоритм Петерсона требует чтоб число записывалось за один раз, атомарно.
fk0> И самое поганое, запись в volatile-переменные не упорядочена по сравнению с другими обращениями
fk0>к памяти.
В MSVC по-умолчанию доступ к volatile-объектам имеет acquire-release семантику
https://docs.microsoft.com/en-us/cpp/cpp/volatile-cpp?view=msvc-170#end-of-iso-conformant