b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

编译器对新线程标记变量值的变更的影响

电脑杂谈  发布时间:2021-01-23 13:13:30  来源:网络整理

线程对特定字段所做的更改对于新创建的线程不可见。造成这种现象的主要原因是,JIT编译器可以优化新线程代码中的while循环,因此新线程无法程上下文中看到变量的变化。此外,新线程只能从其寄存器或本地缓存中读取标记变量的值,而不是每次都运行到速度较慢的内存中。由于上述原因,新线程看不到主线程对其标签变量值的更改。

关键字volatile原子性_volatile 内存可见性_volatile的内存模型

如果您想快速解决此问题,只需将变量标记为已完成即可。

关键字volatile原子性_volatile的内存模型_volatile 内存可见性

关键字volatile的功能是告诉JIT编译器不要对可能影响其访问顺序的标记变量执行任何优化。此关键字警告JIT编译器该变量可能被线程更改,因此对变量的任何读或写访问都需要忽略本地缓存并直接操作内存。之前我称此更改为快速修复,因为如果我们将所有变量都标记为volatile,尽管可以完全避免这种问题,但它将使每个变量访问都跨越内存障碍,并最终导致程序性能下降。 。另外,在多个线程同时访问多个字段的情况下,由于对每个volatile字段的访问是独立处理的,并且这些访问不能统一为一个访问,因此volatile关键字不能保证整个操作的原子性。此问题的结果是线程可能只看到某些字段的中间结果,而看到其他变量的最终更改结果。

关键字volatile原子性_volatile的内存模型_volatile 内存可见性

摘要:

关键字volatile原子性_volatile 内存可见性_volatile的内存模型

由volatile关键字修改的字段将确保内存可见,并且由volatile关键字修改的字段不会重新排列。

关键字volatile原子性_volatile的内存模型_volatile 内存可见性


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/shoujiruanjian/article-349896-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...