首页 > 试题广场 >

volatile类型在以下哪些情况下需要使用?()

[不定项选择题]
volatile类型在以下哪些情况下需要使用()
  • 外部中断会改变变量
  • 外部任务会改变变量
  • 变量使用的是动态申请的内存空间
  • 对硬件寄存器进行操作
以下是几个用到volatile关键字修饰变量的情况:
  1. 设备的硬件寄存器(如:状态寄存器)
  2. 一个中断服务子程序中会访问到的非自动变量(Non-automatic variables)
  3. 多线程应用中被几个任务共享的变量
发表于 2019-07-24 20:24:18 回复(0)
以下是几个用到volatile关键字修饰变量的情况:
  1. 设备的硬件寄存器(如:状态寄存器)
  2. 一个中断服务子程序中会访问到的非自动变量(Non-automatic variables)
  3. 多线程应用中被几个任务共享的变量
发表于 2021-06-18 16:24:17 回复(0)
volatile对应的变量可能在你的程序本身不知道的情况下发生改变
比如多线程的程序,共同访问的内存当中,多个程序都可以操纵这个变量
你自己的程序,是无法判定何时这个变量会发生变化
还比如,他和一个外部设备的某个状态对应,当外部设备发生操作的时候,通过驱动程序和中断事件,系统改变了这个变量的数值,而你的程序并不知道。
对于volatile类型的变量,系统每次用到他的时候都是直接从对应的内存当中提取,**而不会利用cache当中的原有数值,**以适应它的未知何时会发生的变化,系统对这种变量的处理不会做优化——显然也是因为它的数值随时都可能变化的情况。
————————————————
版权声明:本文为CSDN博主「乌克兰水晶小乳猪」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/didi1663478999/article/details/98523122
发表于 2023-05-06 12:43:06 回复(0)
我眼花了,下字看成不字了。。。
发表于 2023-06-18 11:12:19 回复(0)
任务那个我表示怀疑,一个变量被几个任务用的话要加吗? 在任务里面写 while(a);a在其他的任务里面变成0。然后这个while一定会跳出的吧,求解答
发表于 2020-03-29 15:49:00 回复(1)