2012-04-30 4 views
0

囲みスコープでは、parallel_forループ内の各スレッドがアクセスする必要のある変数がいくつかあるとします。私は、スレッドごとに自分の変数のコピーを作成して、組み合わせることができます。しかし、私は組み合わせ可能なものを初期化する方法を理解していません。C++ PPL - コンビネーションを初期化する

たとえばQString式のコピーを使いたいとします。私は、各スレッドにコピーされたもののために立って組み合わせを作成します。

combinable<QString> formulaRx; 

は、私は、書く必要があります:

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

     // do things 

}); 

?この問題を解決するだろうか、まだライン

formulaRx.local() = formula; 

これを処理する適切な方法は何であるとの同時アクセスがあるでしょうか?

クリアしないと教えてください

ありがとうございました。

答えて

1

formulaRx.local()を割り当てる必要はありません。 これは、結合可能オブジェクトのローカルコピーのゲッターです。

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

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

}); 
+0

ありがとう。しかし、私はもっと正確にすべきでした:私は同じ状況でポインタを使って作業しています::もし式がポインタならどうなりますか?それから私は 'ポインタ'は同じことを指すと思う。 – octoback