理解volatile关键字

Last Updated: 2023-10-06 09:02:39 Friday

-- TOC --

voldatile关键字表达了易变性,声明为volatile的变量,编译器会强制要求读内存。

在嵌入式领域,申明volatile变量比较常见,可能存在程序之外的对volatile变量的修改,因此每一次使用这个变量时,都必须读取内存中的值。哪怕是连续的读取这个变量,每一次也都要从内存中取值。

其次,volatile具有是不可优化性,volatile告诉编译器,不要对这个变量进行各种激进的优化,甚至将变量直接消除,保证代码中的指令一定会被执行。

最后是顺序性,编译器需要保证Volatile变量间的顺序性,不会进行乱序优化。不过要注意与非volatile变量之间的操作,还是可能被编译器重排序的。

需要注意的是,volatile表达的含义,跟原子操作无关,对volatile变量的操作,并非原子的。

参考:x64汇编学习(2)-- volatile

本文链接:https://cs.pynote.net/sf/c/202301202/

-- EOF --

-- MORE --