内存屏障面试题及详细答案.docxVIP

  • 6
  • 0
  • 约7.61千字
  • 约 9页
  • 2026-06-13 发布于河北
  • 举报

内存屏障面试题及详细答案

一、基础必考题(入门级,必问)

1.请用通俗的话解释下,什么是内存屏障?它解决了什么问题?

答案:通俗来讲,内存屏障就是CPU或编译器的“指令执行刹车”,强制让其在屏障前后的内存操作,按照我们预期的顺序执行,不能乱序。

它主要解决两个核心问题:

1.编译器优化导致的指令重排:编译器为了提高效率,会在不影响单线程逻辑的前提下,打乱代码的执行顺序(比如把后面的读操作提前),但多线程下会出问题;

2.CPU乱序执行+缓存一致性问题:多CPU核心有各自的缓存,核心间缓存同步有延迟,且CPU会乱序执行指令,导致不同线程看到的内存数据不一致,出现“脏读”“漏写”。

简单说,内存屏障就是“强制有序”,保证多线程下内存操作的可见性和顺序性,避免出现逻辑bug。

2.内存屏障和volatile的关系是什么?volatile能替代内存屏障吗?

答案:两者是“包含与被包含”的关系,volatile依赖内存屏障实现,但volatile不能完全替代内存屏障。

具体来说:

1.volatile的核心作用:保证变量的可见性(一个线程修改后,其他线程能立即看到最新值)、禁止指令重排(仅针对该volatile变量相关的指令);

2.volatile的实现原理:底层就是通过插入内存屏障实现的(比如Java中,volatile写操作后会插入StoreStore屏障、Sto

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档