chenci2013
发表于 2023-10-8 13:04
volatile关键字会使编译器不能进行任何可能的优化,包括推导出的立即值,所以它可以保证在处理器高速运行,而内存访问可能滞后的情况下,最近的值会被用到。
sdlls
发表于 2023-10-8 13:19
如果不使用 volatile 关键字,编译器可能会认为某个变量的值在某段代码中没有被改变,因此可以将读取操作缓存到寄存器中,或者将多个读取操作合并为一个,从而可能导致不正确的行为。
fengm
发表于 2023-10-8 13:32
volatile关键字可以用来修饰变量,表明这些变量可能会被未知的因素更改
cemaj
发表于 2023-10-8 13:48
当多个volatile语句具有相同的有效地址并且没有顺序依赖关系时,编译器可以将它们合并为一个访问。但是,volatile关键字会禁止这种合并,以确保每个指令都是独立的。
saservice
发表于 2023-10-8 13:59
通过使用volatile关键字,可以保证变量的实时性,即变量的值在程序运行过程中不会被意外改变。
sesefadou
发表于 2023-10-8 14:11
使用volatile声明的变量不会被缓存在寄存器或者对其他处理器不可见的地方。这意味着每次读写这个变量,系统都会从主内存中读取数据,而不是从缓存中。这样可以确保其他线程在访问这个变量时,都能获取到最新的数据。
tabmone
发表于 2023-10-8 14:23
volatile关键字在单片机编程中用于标识可能会被意外修改的变量
cemaj
发表于 2023-10-8 14:34
volatile关键字还可以作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读值。
tpgf
发表于 2023-10-14 11:03
Volatile修饰的成员变量在每次被线程访问时,都强迫从共享内存中重读该成员变量的值
wowu
发表于 2023-10-14 11:33
volatile关键字和synchronized关键字都实现了内存可见性
磨砂
发表于 2023-10-14 11:54
程序加了RTOS,并且多个任务共享一个全局变量时,用volatile关键词修饰下
xiaoqizi
发表于 2023-10-14 12:25
从内存可见性的角度看,写入volatile变量相当于退出同步代码块,而读取volatile变量相当于进入同步代码块。
木木guainv
发表于 2023-10-14 22:11
如果有全局变量,会在中断里去改变它的值,最好用volatile关键字修饰下。
wakayi
发表于 2023-10-15 11:00
volatile是一种稍弱的同步机制,在访问volatile变量时不会执行加锁操作,也就不会执行线程阻塞,因此volatilei变量是一种比synchronized关键字更轻量级的同步机制
digit0
发表于 2023-11-10 16:53
利用volatile关键字可以包管内存的可见性,即当当地内存。
Pretext
发表于 2023-11-10 18:35
防备编译器对于其举行优化
aple0807
发表于 2023-11-12 14:09
本帖最后由 aple0807 于 2023-11-12 14:10 编辑
没那么多弯弯绕。volatile修饰的变量只有一条作用:实时访问变量所在内存。 具体表现为:
1、写操作,保证直接写入变量所在内存地址。
2、读操作,保证直接从变量所在内存取数据。
LLGTR
发表于 2023-12-5 09:58
volatile关键字是一个相当紧张的关键字,用于控制变量的可见性以及更新方法
forgot
发表于 2023-12-11 08:27
使用volatile关键字可以明确地告诉编译器,这些变量的值可能会被意外地改变,因此在读取这些变量的值时,需要确保变量的值是最新的。
天天向善
发表于 2024-1-8 15:22
volatile关键字可用于修改变量,表明该变量可能会被意外更改