组合使用变量说明符static volatile有什么区别?或者单独使用一个;就像微控制器编程中的static或volatile?
发布于 2017-09-02 16:57:28
静态-在这种情况下,使变量仅在当前文件内可见
易失性-这是编译器的信息,即对象可以由正常执行路径(例如,中断例程)之外的某些东西更改,并保证在任何使用之前读取变量,并在每次更改之后写入变量。易失性(这是一个非常常见的误解)不能保证其他任何东西--没有原子性、没有缓存一致性等。
发布于 2017-09-02 12:46:59
对于关键字static和volatile,已经写得足够多了。
例如,请参阅:
在TWI接口方面,volatile是必需的,因为修改这些变量的函数可以从不同的中断服务处理程序中调用。如果要删除volatile,编译器将优化代码,而不知道代码可能会被中断。这可能会导致失败。
发布于 2020-01-16 16:02:29
静态
静态变量是指在所有实例之间共享的类变量。
易失性:
易失性变量是那些读写到主存的变量。它们不存储在本地缓存中,总是从主存中获取。
例如,两个线程使用private volatile int x;。如果线程A写(X)和线程B读(X),那么它将从主内存写入和读取的时间,而不使用线程的本地缓存。
静态易失性:
即使静态变量是共享变量,但在不同的线程中,线程的本地缓存中的静态变量可以有不同的值。要使其对所有线程保持一致,只需将其声明为static volatile即可。所以每次它都会从主内存中获取数据。
https://stackoverflow.com/questions/46010403
复制相似问题