1、对于伪共享
1.1、回顾:
1、在第三课咱们就学习了多核 CPU 是如何解决“本地高速缓存”与“共享内存“一致性问题,其中就学了一个重要的概念:Cache Line。2、《Java 并发编程的艺术》对于 Cache Line 的解释:缓存中能够调配的最小存储单位。处理器填写缓存线时会加载整个缓存线,须要应用多个主内存读周期。3、关键字:“会加载整个缓存线”。
1.2、伪共享是什么?
a、名词:一个缓存行中可能存有多个变量,当多个线程同时批改一个缓存行外面的多个变量时,因为同时只能有一个线程操作缓存行,所以相比将每个变量放到一个缓存行,性能会有所降落,这就是伪共享。b、解释:如上图,每个 Cache Line 中都可能存在多个变量,这就是下面说的“会加载整个缓存线”。当一个缓存行中的变量存在资源竞争,其余线程拜访其余变量会呈现阻塞的状况,能够了解为多个线程相互阻塞,使效率显著降落。