首页 > 解决方案 > 如果每个线程都有自己的只读数组副本,线程会更快吗

问题描述

如果我有多个线程,每个线程都基于联合只读数组进行一些计算,那么如果我为每个数组提供该数组的单独副本会更快。例如,假设X是一个数字介于 0 和 1 之间的数组,线程 n 计算sin(nX)(逐项)。X我应该为每个线程创建深层副本吗?

当然我可以尝试一下,但我首先必须学习如何实现线程。我希望在 C++ 中做到这一点,以防万一。

标签: c++multithreadingc++11

解决方案


一般来说,制作只读数据的每个线程副本没有任何优势。每个 CPU 已经将自己最近访问的内存副本保存在其缓存中,如果数据是只读的,则缓存永远不需要被其他 CPU 的写操作无效。

如果访问据称是只读的数据实际上涉及隐藏的写入操作,例如更新引用计数(如果您正在使用shared_ptr.


推荐阅读