sigmaN 0 22 января, 2017 Опубликовано 22 января, 2017 · Жалоба Не надо изобретать велосипед. Есть два критения: 1) если переменная используется в двух потоках (читай - в основном цикле и прерывании). Компилятор обязан при каждом обращении на чтение вычитывать ее из ОЗУ и при каждом обращении на запись класть обратно. 2) если важен порядок доступа к этой переменной (читай - регистры периферии). Компилятор обязан делать то же самое, что и п.1, кроме этого не имеет права менять местами обращения к этой переменной относительно обращений к другим volatile. Я на C++, как большой любитель делать всё правильно, столько наелся кактусов с этим volatile для переменных(экземпляров классов) используемых и в прерывании и нет, что в итоге плюнул и каким-то чудом оно работает )))))))))) Из-за строгой типизации там просто ад получается. Волатильный экземпляр может вызывать только волатильные метод и так далее короче. Кстати кто как на плюсах выкручивается в таких ситуациях? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xvr 12 23 января, 2017 Опубликовано 23 января, 2017 · Жалоба Выключите оптимизацию в опциях компилятора Вау! А наилучшее лекарство от головной боли - гельотина? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Укушенный воблой 0 25 января, 2017 Опубликовано 25 января, 2017 · Жалоба Нет. :twak: Если с умом подходить к разработке программы то всякие "танцы с бубном" вроде включения "оптимизации лэвел 4" не нужны. Ибо когда разработчик начинает "танцы с бубном" - это означает, что он фактически расписался в своей некомпетентности и что ситуация вышла из под контроля. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться