c++ - 如果每个线程都有自己的只读数组拷贝,线程会更快吗

标签 c++ multithreading c++11

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

当然我可以尝试一下,但我首先必须学习如何实现线程。我希望在 C++ 中执行此操作,以防万一。

最佳答案

一般来说,制作只读数据的每线程拷贝没有任何优势。每个 CPU 都已经在其缓存中保留了自己最近访问的内存拷贝,如果数据是只读的,则缓存永远不需要通过其他 CPU 的写操作而失效。

如果访问据称只读的数据实际上涉及隐藏的写入操作,例如在使用 shared_ptr 时更新引用计数,情况可能会有所不同。

关于c++ - 如果每个线程都有自己的只读数组拷贝,线程会更快吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53992422/

相关文章:

c++ - 在没有当前窗口对象的情况下创建开罗上下文

c++ 隐式复制构造函数是否复制数组成员变量?

c++ - 如何以 “fun”的方式学习c++?

c# - 接受变量的静态成员会损坏吗?

c++ - 使用参数包的 lisp-like c++

c++ - 如何检查分离的 std::thread 是否仍在运行?

c++ - 在 Qt 中使用不同的模板构建目标

.net - 我可以(安全地)在 ADO.NET 数据服务中使用 ThreadStatic 属性吗?

linux - 线程退出但仍保持互斥

c++ - 复制字符串