volatile

这是一个 类型修饰符 ,位置同 const static 等。一个使用 volatile 修饰的变量,比如 volatile int i;  每次对该变量的直接引用,都会访问内存,而不是从寄存器中读取(如果其已经在寄存器中)。这样一来, volatile 似乎没什么用处,反倒会使数据的读取相对变慢很多。但是,如果没有 volatile ,编译器可能会优化你的程序,使得数据从寄存器中读取,从而加快程序的运行,但如果这个变量是同其它进程/线程 共享 的,就可能造成数据的不一致。多线程情况下,你可以使用互斥机制来保证对共享数据访问的原子性。但是,在单片机等嵌入式环境中,硬件经常不会有这种 互斥机制 的支持,这时某些共享的数据(比如端口)就可能会产生不一致的情况。而使用 volatile 就会使编译器不对代码进行优化,每次对该变量的访问都会从内存中读取。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值