Bob*_*Bob 1 c++ multithreading stl vector montecarlo
在我的代码中,我有2/4个线程执行montecarlo模拟.他们每个人都进行了许多实验,他们都将结果收集到一个stl向量中.我的问题是:假设每个线程顺序运行1000个实验.最好是将结果存储在共享向量中,或者每隔一段时间存储一次?如果他们等到他们有一定数量的数据,写入向量将需要更长时间,所以我不确定第二个解决方案是否必然比第一个更好.
PS每个实验都是数值计算,所以没有IO操作.
谢谢
如果要在使用任何结果之前等待所有结果计算,请在向量中预先分配4,000个结果的空间,并让每个线程写入向量中的一个元素范围.不需要锁定,因为没有两个线程访问向量中的相同元素.
如果要在计算结果时使用结果,请使用某种并发队列数据结构而不是向量.