2012-04-30 3 views
0

Disons que dans la portée englobante, j'ai certaines variables auxquelles chaque thread d'une boucle parallel_for doit accéder. J'ai une idée combinable qui conviendrait, faisant une copie de ma variable dans chaque fil. Cependant, je ne comprends pas comment initialiser ma chose combinable:C++ PPL - initialise un combinable

Par exemple je veux utiliser des copies d'une formule QString. Je crée un debout combinables pour les choses copiés dans chaque thread:

combinable<QString> formulaRx; 

devrais-je écrire alors:

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

     // do things 

}); 

? Ne serait-ce résoudre le problème, ou serait-il encore un accès simultané à la ligne

formulaRx.local() = formula; 

Quelle est la bonne façon de gérer cette situation?

S'il vous plaît me dire si pas clair

Merci et salutations.

Répondre

1

vous n'avez pas besoin d'affecter formulaRx.local(). Ceci est un getter pour la copie locale de l'objet combinable.

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

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

}); 
+0

Merci. Cependant, j'aurais dû être plus précis: je travaille aussi avec des pointeurs dans la même situation: et si la formule est un pointeur? Ensuite, je suppose que les «pointeurs» f pointeraient vers la même chose. – octoback

Questions connexes