Я делаю встроенную прошивку, где все после инициализации происходит в ISR. У меня есть общие переменные, и мне интересно, в каких случаях они должны быть изменчивыми. Я никогда не блокирую, ожидая смены в другом ISR.
Когда я могу быть уверен, что фактическая память читается или записывается, если не используется volatile? Один раз в ISR?
Дополнение:
Это для ARM Cortex-M0, но на самом деле это вопрос не столько об ISR, сколько об оптимизации компилятора, и поэтому платформа не должна иметь большого значения.
volatile
. Вы могли шлепнутьvolatile
на все; однако это не лучший способ программирования. - person Jonathan Leffler   schedule 04.10.2014volatile
во встроенной системе в основном используется для описания регистра, и это важно. иногда вы обнаруживаете, что вам нужно сделатьreg|=0x1;reg&=~0x1;
, и это имеет смысл. безvolatile
это будет оптимизировано без кода, если только вы не отключите оптимизатор, что иногда вам не понравится. к простому вводу-выводу памяти, я не вижу причины. - person Jason Hu   schedule 04.10.2014