C语言之--volatile关键字

来源:互联网 发布:淘宝联盟点击赚钱 编辑:程序博客网 时间:2024/05/22 12:46

 volatile指令关键字,作用为确保本条指令不会被编译器优化,表明变量有可能会被改变,相应的变量应直接存取至原始内存地址。

  在一个线程内,当读取一个变量时,为提高存取速率,编译器优化时有时会把变量读取到一个寄存器中,以后直接从寄存器中取值。当变量在本线程内改变时,会把新值copy到寄存器中,保持一致。但若因为其他线程而改变,寄存器中的值未同步改变,会造成实际值与读取值不一致。
  
 volatile常用在以下几种情况:

  • 中断服务程序中修改的供其他程序检测的变量
  • 多任务环境下,各任务间共享的标志
  • 存储器映射的硬件寄存器
原创粉丝点击