假设在封闭范围内,我具有一些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/