История изменений
Исправление byko3y, (текущая версия) :
volatile нужен там, где состояние переменной определяется не абстрактной машиной С, а реальным железом
Да какая разница, драйверами, железом, сигналами, другим процессом, или чем угодно - все равно на фоне внеочередного исполения нет никакой гарантии, что значение, считанное из volatile ячейки предыдущей командой, действительно было таким до выполнения текущей команды. Более того, есть специальные команды/режимы процессора x86, которые гарантируют чтение именно из оперативной памяти, а не из кэша - они также не входят в понятие volatile, потому оно совершенно бесполезно для системного и многопоточного программирования.
Исходная версия byko3y, :
volatile нужен там, где состояние переменной определяется не абстрактной машиной С, а реальным железом
Да какая разница, драйверами, железом, сигналами, другим процессом, или чем угодно - все равно на фоне внеочередного исполения нет никакой гарантии, что значение, считанное из volatile ячейки предыдущей командой, действительно было таким до выполнения текущей команды. Более того, есть специальные команды/режимы процессора x86, которые гарантируют чтение именно из оперативной памяти, а не из кэша. И всё это не входит в понятие volatile, потому оно совершенно бесполезно для системного и многопоточного программирования.