Java开发工程师最新面试题库系列——Java基础部分
2012 年 9 月 16 日
什么是多线程环境下的伪共享(false sharing)?
伪共享是多线程系统(每个处理器有自己的局部缓存)中一个众所周知的性能问题。伪共享发生在不同处理器上的线程对变量的修改依赖于相同的缓存行,如下图所示:
小知识点:
*1.*
共享就是一个内存区域的数据被多个处理器访问,伪共享就是不是真的共享。
这里的共享这个概念是基于逻辑层面的。实际上伪共享与共享在cache line 上实际都是共享的。
*
2.*
CPU访问的数据都是从cache line 中读取的。如果cpu 在cache 中找不到需要的变量,则称缓存未命中。**