"什么是多线程环境下的伪共享(false sharing)?"

什么是多线程环境下的伪共享(false sharing)?

伪共享是多线程系统(每个处理器有自己的局部缓存)中一个众所周知的性能问题。伪共享发生在不同处理器的上的线程对变量的修改依赖于相同的缓存行,如下图所示:

https://pic1.zhimg.com/v2-a9557dcd20f2d034d8f2a28c643e7974_b.jpg

伪共享问题很难被发现,因为线程可能访问完全不同的全局变量,内存中却碰巧在很相近的位置上。如其他诸多的并发问题,避免伪共享的最基本方式是仔细审查代码,根据缓存行来调整你的数据结构。

PS:写作不易,如要转裁,请标明转载出处。
登录
注册
回顶部