假设在封闭范围内,我具有一些parallel_for循环中的每个线程都应访问的变量。我有一个可组合的适合的想法,在每个线程中为我的变量制作一个副本。但是,我不知道如何初始化可组合的东西:

例如,我想使用QString公式的副本。我为每个线程中复制的内容创建一个可组合的立场:

 combinable<QString> formulaRx;


那我应该写:

parallel_for(0,p,[&formulaRx, formula](int i)
{
         formulaRx.local() = formula;

         // do things

 });


?这样可以解决问题,还是仍然可以同时访问生产线

 formulaRx.local() = formula;


处理此问题的正确方法是什么?

请告诉我是否不清楚

谢谢并恭祝安康。

最佳答案

您无需分配formulaRx.local()
 这是可组合对象的本地副本的吸气剂。

parallel_for(0,p,(int i)
{
     QString f = formulaRx.local();

     // do things with f which is the local copy of formulaRx

});

关于c++ - C++ PPL-初始化可组合,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10385991/

10-11 00:44