c++ - 如果每个线程都有自己的只读数组副本,线程会更快吗
问题描述
如果我有多个线程,每个线程都基于联合只读数组进行一些计算,那么如果我为每个数组提供该数组的单独副本会更快。例如,假设X
是一个数字介于 0 和 1 之间的数组,线程 n 计算sin(nX)
(逐项)。X
我应该为每个线程创建深层副本吗?
当然我可以尝试一下,但我首先必须学习如何实现线程。我希望在 C++ 中做到这一点,以防万一。
解决方案
一般来说,制作只读数据的每个线程副本没有任何优势。每个 CPU 已经将自己最近访问的内存副本保存在其缓存中,如果数据是只读的,则缓存永远不需要被其他 CPU 的写操作无效。
如果访问据称是只读的数据实际上涉及隐藏的写入操作,例如更新引用计数(如果您正在使用shared_ptr
.
推荐阅读
- python - 请在 tkinter 按钮中提供帮助
- c++ - 在多线程程序中调用 fork() 会阻塞所有线程吗?
- bitbucket-pipelines - Bitbucket 管道上的“未设置远程主机”错误
- python - MatplotLib 图表 -> ConversionError:无法将值转换为轴单位
- microservices - sagas 在微服务架构中的位置在哪里?
- python-3.x - 一起使用 Numba 和 Cython 是否明智?
- c# - 双击文件后将文件路径传递给应用程序
- ios - 如何显示数组json数组中的图像
- spring - 春天兔子MQ。连接多个应用实例时确定所有消费者
- angular - 表没有获得价值,因为价值未定义