大家好,又见面了,我是你们的朋友全栈君。
voliate变量是随时变化的,用voliate修饰的运算,编译器不进行优化,以免出错。
对于一个普通变量,为提高存取速率,编译器会先将变量的值存储在一个寄存器中,以后再取变量值时,就存寄存器中取出。
但是用voliate修饰的变量,就说明这个变量会发生意向不到的改变。也就是说,优化器每次在读取该值时,不会假设这个值了,每次都会小心的在读取这个变量的值,而不是在寄存器中取保留的备份。
那么,一个参数可以同时被const和voliate修饰吗? 答案是可以的,如:只读的状态寄存器。它是voliate,是因为它可能会发生意想不到的改变;它是voliate,表示程序不应该试图去改变它。
voliate关键字的应用场景 1、中断服务程序中修改的供其它程序检测的变量需要加volatile; 2、多任务环境下各任务间共享的标志应该加volatile; 3、存储器映射的硬件寄存器通常也要加volatile说明,因为每次对它的读写都可能由不同意义。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/134639.html原文链接:https://javaforall.cn