Appearance

Java 多线程与并发

Double

Java 多线程与并发

未归类概念

内存屏障(禁止指令重排序)

什么是内存屏障?

内存屏障(memory barrier),是一条 CPU 指令。

内存屏障的作用是什么?

禁止指令重排序

如何实现禁止指令重排序的?

  1. 插入内存屏障后,内存屏障前的执行必须先执行,内存屏障后的指令必须后执行,禁止指令重排序。
  2. 强制更新一次不同 CPU 的缓存。

内存屏障的分类

Java 中的内存屏障有 Load Barrier 和 Store Barrier 两类。

Load Barrier:在读指令前插入 Load Barrier,让缓存中的数据全部失效并重新从内存中读取。

Store Barrier:在写指令后插入 Store Barrier,会将缓存中的数据全部同步到内存中。

相关文章:

[java内存屏障的原理与应用_Java_breakout_alex的博客-CSDN博客]https://juejin.cn/post/6844904079978659848open in new window

lock 指令前缀(缓存一致性)

什么是 lock 指令前缀?

lock 指令前缀的作用是什么?

解决不同 CPU 之间缓存不一致的问题。

lock 指令前缀解决缓存一致性的原理是什么?

CPU 的读写操作都是针对 L1 缓存的,将数据从 L1 缓存中读取或将数据写入 L1 缓存后指令就算执行完成了。

TODO(GShLi): 有待研究

最后更新时间 2025/1/18 16:40:50