并行运行std :: vector的不同元素

bob*_*obo 5 c++ parallel-processing multithreading thread-safety

说我有一个std::vector<Object*>.向量很大(> 1000个元素),每个都Object*需要对其进行大量计算.然后,可以轻松地并行化每个元素上运行每个计算的for循环.事实上,我可以并行处理所有1000个元素以获得最大加速("令人尴尬的并行?")

现在我想知道两件事:

1)它是安全的读写不同元素std::vector无锁?(修改矢量本身!)

2)是否有简单的方法或约定或模式来切断for循环并分派给线程?

Ale*_*x F 4

1) 是的

2) 您可以使用 OpenMP 并行化矢量处理。如果您使用 Microsoft VC++ 2010,并发库具有parallel_for 和parallel_for_each 算法。