本文主要是介绍CPU L1-cache的false-sharing,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
L1-cache加载和失效的单位是64字节;
所以2个变量挨着放,线程1和线程2虽然两者访问的是不同地址的变量(至少有一个线程在写入),也会导致2个L1-cache该行不停的失效,不停的加载内存进L1-cache,导致速度损失。
解决方法:加padding,让不同线程访问的2个变量离得远些,不在同一cache行。
挨着和不挨着,人家测的性能对比,损失和线程个数基本成倍数:
这篇关于CPU L1-cache的false-sharing的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!