【内存屏障】

简介: 【内存屏障】

什么是内存屏障:内存屏障是一条指令,该指令可以对编译器(软件)和处理器(硬件)的指令重排做出一定的限制,比如,一条内存屏障指令可以禁止编译器和处理器将其后面的指令移到内存屏障指令之前。

为什么需要内存屏障:编译器和处理器指令重排只能保证在单线程执行下逻辑正确,在多个线程同时读写多个变量的情况下,如果不对指令重排作出一定限制,代码的执行结果会根据指令重排后的顺序产生不同的结果。指令重排后的顺序每次执行时都可能不一样,显然我们希望我们的代码执行结果与代码顺序是逻辑一致的(可能不太准确),所以我们需要内存屏障

相关文章
|
4天前
|
缓存 Java 编译器
关于volatile与指令重排序的探讨
关于volatile与指令重排序的探讨
18 1
|
23天前
|
缓存
内存屏障笔记分享
【4月更文挑战第3天】内存屏障笔记分享
36 5
|
10月前
|
缓存 Java 编译器
05.深入理解JMM和Happens-Before
大家好,我是王有志。今天我们一起来学习Java并发编程中最重要的两个理论知识JMM和Happens-Before原则。
69 1
05.深入理解JMM和Happens-Before
|
10月前
|
存储 缓存 Java
到底什么是内存可见性?
到底什么是内存可见性?
87 0
|
11月前
|
存储 缓存 Java
关于JMM的理解
JMM是java内存模型,它描述的是和多线程相关的一组规范。通过这组规范定义了程序中对各个变量的访问方式。保证了不同jvm运行并发程序的结果的一致性和可靠性。
63 0
|
存储 SQL 缓存
|
缓存 Java
内存可见性引发的思考
内存可见性引发的思考
内存可见性引发的思考
volatile与JMM(二)
问:volatile凭什么可以保证可见性和有序性 答: 内存屏障
73 0
volatile与JMM(二)
|
存储 SQL Java
理解JMM和Volatile
理解JMM和Volatile
105 0