gpt4 book ai didi

C++ 多线程优化

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:23:55 26 4
gpt4 key购买 nike

在我的代码中,我有 2/4 个线程执行蒙特卡洛模拟。他们每个人都进行了许多实验,他们都将结果收集到一个 STL vector 中。我的问题是:假设每个线程按顺序运行 1000 个实验。是一次将结果存储到共享 vector 中,还是每隔一段时间将结果存储到共享 vector 中更好?如果他们等到他们有一些一致的数据量,写入 vector 将花费更长的时间,所以我不确定第二种解决方案是否一定比第一种更好。

PS每个实验都是数值计算,所以没有IO操作。

谢谢

最佳答案

如果您打算等到所有结果都计算完后再使用任何结果,请在 vector 中为 4,000 个结果预分配空间,并让每个线程写入 vector 中的一个范围内的元素。不需要锁定,因为没有两个线程访问 vector 中的相同元素。

如果您想在计算结果时使用它们,请使用某种并发队列数据结构而不是 vector 。

关于C++ 多线程优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4731907/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com