伪共享是多线程中因不同变量同处一缓存行引发的性能瓶颈:一核写导致整行失效,他核读写需重加载,造成缓存行颠簸;根源在于CPU以64字节缓存行为单位管理内存,且仅并发写才触发问题。

伪共享是多线程程序中一种隐蔽的性能瓶颈:多个线程频繁修改位于同一CPU缓存行(通常是64字节)但逻辑上无关的变量,导致缓存行在核心间反复无效化和同步,严重拖慢执行速度。
为什么会出现伪共享
CPU以缓存行为单位加载和写回内存。即使两个变量在代码中完全独立、分属不同线程,只要它们在内存中地址相近(比如相邻成员变量、数组相邻元素),就可能落入同一缓存行。当一个线程修改其中某个变量时,整个缓存行被标记为“已修改”,其他核心上该行副本立即失效;另一线程读/写同行内另一变量时,必须重新从内存或其它核心拉取整行——这叫“缓存行颠簸”(cache line bouncing)。
标签: linux 字节 c++ nas 热点 性能瓶颈 为什么
还木有评论哦,快来抢沙发吧~