多线程学习第六课

1、关于伪共享

1.1、回顾:
1、在第三课我们就学习了多核CPU是如何处理“本地高速缓存”与“共享内存“一致性问题,其中就学了一个重要的概念:Cache Line。

2、《Java并发编程的艺术》关于Cache Line的解释:缓存中可以分配的最小存储单位。处理器填写缓存线时会加载整个缓存线,需要使用多个主内存读周期。

3、关键字:“会加载整个缓存线”。
1.2、伪共享是什么?

多线程学习第六课_第1张图片

a、名词:一个缓存行中可能存有多个变量,当多个线程同时修改一个缓存行里面的多个变量时,由于同时只能有一个线程操作缓存行,所以相比将每个变量放到一个缓存行,性能会有所下降,这就是伪共享。
b、解释:如上图,每个Cache Line中都可能存在多个变量,这就是上面说的“会加载整个缓存线”。当一个缓存行中的变量存在资源竞争,其他线程访问其他变量会出现阻塞的情况,可以理解为多个线程互相阻塞,使效率明显下降。

你可能感兴趣的:(多线程)