LINUX.ORG.RU

История изменений

Исправление byko3y, (текущая версия) :

volatile используется в довольно ограниченном числе случаев, обычно в обработчиках сигналов и прерываний. Это слишком частный случай, чтобы называть оптимизацию всего остального некорректной.

Ввод-вывод и многопоточность-многозадачность (разделяемая память) как минимум. Си был изначально однозадачным ЯП с синхронным вводом-выводом, но такой подход давно неактуален, потому необходимость деоптимизации нынче намного больше, просто делается она не только через volatile, а, например, через встроенные атомарные функции (__atomic_***). В ОС, которая работает с устройствами через память, это вообще беда, там сплошные volatile в драйверах, но это всё-таки больше про ядро, а не userspace.

Исходная версия byko3y, :

volatile используется в довольно ограниченном числе случаев, обычно в обработчиках сигналов и прерываний. Это слишком частный случай, чтобы называть оптимизацию всего остального некорректной.

Ввод-вывод и многопоточность-многозадачность (разделяемая память) как минимум. Си был изначально однозадачным ЯП с синхронным вводом-выводом, но такой подход давно неактуален, потому необходимость деоптимизации нынче намного больше, просто делается она не только через volatile, а, например, через встроенные атомарные функции (__atomic_***). В ОС, которая работает с устройствами через память, это вообще беда, там сплошные volatile, но это всё-таки больше про ядро, а не userspace.