0

假设在封闭范围内,我有一些变量,parallel_for 循环中的每个线程都应该访问这些变量。我有一个可以组合的想法,在每个线程中制作一个我的变量副本。但是,我不明白如何初始化我的可组合事物:

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

 combinable<QString> formulaRx;

那我应该写:

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

         // do things

 });

? 这会解决问题吗,还是仍然可以与线路并发访问

 formulaRx.local() = formula;

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

如果不清楚请告诉我

谢谢并恭祝安康。

4

1 回答 1

1

你不需要分配formulaRx.local(). 这是可组合对象的本地副本的 getter。

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

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

});
于 2012-04-30T15:57:07.127 回答