Vladimir Ljaschko (04.05.2010 14:12, просмотров: 82) ответил VVB_ на В моей жизни пока не было случая, чтобы предполагалось, что переменная, изменяемая в прерывании, может измениться в последовательной цепочки обработки внутри какой-то функции. Как правило (в моих проектах), при входе в функцию надо один раз узнать
Мой случай Одна из переменных - период между импульсами счетчика жидкости. Считается в прерывании таймера.
Используется в основной программе:
1) Для контроля наличия протока без дополнительных условий.
2) Совместно с другим счетчиком для определения производительности помпы, причем это чтение и деление должно производиться синхронно с импульсом помпы.
Как гарантировать без volatile, что для п.2 компилятор не возьмет значение, считанное в п.1,
без увязок квалификаторов, копий переменных, вызовов функции, допустимости инлайнинга.