bob*_*obo 5 c++ parallel-processing multithreading thread-safety
说我有一个std::vector<Object*>.向量很大(> 1000个元素),每个都Object*需要对其进行大量计算.然后,可以轻松地并行化每个元素上运行每个计算的for循环.事实上,我可以并行处理所有1000个元素以获得最大加速("令人尴尬的并行?")
现在我想知道两件事:
1)它是安全的读写不同元素的std::vector无锁?(不修改矢量本身!)
2)是否有简单的方法或约定或模式来切断for循环并分派给线程?
1) 是的
2) 您可以使用 OpenMP 并行化矢量处理。如果您使用 Microsoft VC++ 2010,并发库具有parallel_for 和parallel_for_each 算法。