Распространенной оптимизацией является изменение порядка операций чтения или записи.Это может помочь в достижении лучшего параллелизма для конвейерных операций, которые в противном случае могли бы привести к «остановкам» (когда компилятор вставляет, ожидает или не выполняет операции для предотвращения опасностей ).
Если переменная помеченаэнергозависимый, он может предотвратить переупорядочение операций такого типа за счет использования барьеров памяти.Как это происходит, зависит от реализации.Чтобы увидеть, что делает компилятор Microsoft C ++, вы можете обратиться к справочнику MSDN на volatile
.