Цитата(Сергей Борщ @ Jan 19 2017, 10:11)

Не надо изобретать велосипед. Есть два критения:
1) если переменная используется в двух потоках (читай - в основном цикле и прерывании). Компилятор обязан при каждом обращении на чтение вычитывать ее из ОЗУ и при каждом обращении на запись класть обратно.
2) если важен порядок доступа к этой переменной (читай - регистры периферии). Компилятор обязан делать то же самое, что и п.1, кроме этого не имеет права менять местами обращения к этой переменной относительно обращений к другим volatile.
Я на C++, как большой любитель делать всё правильно, столько наелся кактусов с этим volatile для переменных(экземпляров классов) используемых и в прерывании и нет, что в итоге плюнул и каким-то чудом оно работает )))))))))) Из-за строгой типизации там просто ад получается. Волатильный экземпляр может вызывать только волатильные метод и так далее короче.
Кстати кто как на плюсах выкручивается в таких ситуациях?
The truth is out there...