CPU L1-cache的false-sharing

L1-cache加载和失效的单位是64字节; 所以2个变量挨着放,线程1和线程2虽然两者访问的是不同地址的变量(至少有一个线程在写入),也会导致2个L1-cache该行不停的失效,不停的加载内存进L1-cache,导致速度损失。 解决方法:加padding,让不同线程访问的2个变量离得远些,不在同一cache行。 挨着和不挨着,人家测的性能对比,损失和线程个数基本成倍数:
相关文章
相关标签/搜索