C++ 使用TLS可以减少缓存未命中?

C++ 使用TLS可以减少缓存未命中?,c++,multithreading,thread-local-storage,C++,Multithreading,Thread Local Storage,如果在多线程程序中使用线程本地存储,是否会减少缓存未命中 编辑: 由于每个线程都有自己的内存池,那么最后访问的内存是否更可能仍在CPU缓存中?否,因为缓存并不是按照线程池大小来组织的,它们独立于您所考虑的选择 不,因为缓存并不是按照线程池大小来组织的,所以它们独立于您所考虑的选择 缓存未命中次数比什么少 TLS只是确保不同线程对不同数据进行操作的众多方法之一(最明显的方法是将每个线程的数据放在自己的堆栈中) 如果您的线程不写入相同的数据(因为这将使所有其他内核的相应缓存线无效),那么您将获得更好

如果在多线程程序中使用线程本地存储,是否会减少缓存未命中

编辑:
由于每个线程都有自己的内存池,那么最后访问的内存是否更可能仍在CPU缓存中?

否,因为缓存并不是按照线程池大小来组织的,它们独立于您所考虑的选择

不,因为缓存并不是按照线程池大小来组织的,所以它们独立于您所考虑的选择

缓存未命中次数比什么少

TLS只是确保不同线程对不同数据进行操作的众多方法之一(最明显的方法是将每个线程的数据放在自己的堆栈中)

如果您的线程不写入相同的数据(因为这将使所有其他内核的相应缓存线无效),那么您将获得更好的缓存行为,但在这方面,您使用哪种方法来确保线程在不同的数据上操作是无关的


(不过,与TLS相关的还有其他开销。它不是魔法,也不是银弹。大多数情况下,它是错误的解决方案)

缓存未命中率比什么要少

TLS只是确保不同线程对不同数据进行操作的众多方法之一(最明显的方法是将每个线程的数据放在自己的堆栈中)

如果您的线程不写入相同的数据(因为这将使所有其他内核的相应缓存线无效),那么您将获得更好的缓存行为,但在这方面,您使用哪种方法来确保线程在不同的数据上操作是无关的


(不过,TLS还有其他相关的开销。这不是魔法,也不是银弹。大多数情况下,这是错误的解决方案)

这个问题完全不清楚。什么样的缓存?TLS的用途是什么?等等。@Thomas我搜索了“缓存未命中”;)和“线程本地存储”为方便起见。啊,CPU缓存。你没有说:)现在更有意义了。这个问题完全不清楚。什么样的缓存?TLS的用途是什么?等等。@Thomas我搜索了“缓存未命中”;)和“线程本地存储”为方便起见。啊,CPU缓存。你没说:)现在更有意义了。