Merci pour ces conseils.
Je suis donc passé à QtConcurrent, ce qui me permet d'utiliser les signaux/slots mais j'ai un maintenant un soucis d'utilisation que je n'avais pas avec boost (surement parce que je me sers mal de Qt). J'ai une boucle sur des répertoires dont je ne connais pas le nombre par avance. Pour chaque itération, je souhaite donc lancer un thread avec QtConcurrent::run, en passant en paramètre un foncteur du style (en simplifiant) :
1 2 3 4 5 6 7 8
| class FunctorSRE
{
public:
FunctorSRE ( int Param1, int Param2, int Param3 );
void operator()() { doCalcAndSaveSRE(); }
private:
void doCalcAndSaveSRE();
}; |
Dans ma boucle, je fais donc :
FunctorSRE MyFunctor ( 1, 2, 3 );
et je ne sais pas comment appeler le run après pour lancer l'opérateur () (il me faudrait un boost::ref ?)
De plus, l'objet MyFunctor est détruit en sortie de la boucle, alors que potentiellement le thread n'est pas encore lancé. Comment faire ?
Partager