Bonjour,
j'ai plusieurs thread au sein d'un même programme qui effectuent des tâches totalement différentes les unes des autres. Les thread sont asynchrones entre eux, c-à-d qu'on ne peut pas prévoir (sauf avertir via les signaux) quand un thread va rendre le résultat de son exécution à un autre thread pour que lui même effectue un travail dessus.
Etant donné que l'exécution de mes thread est asynchrone, j'utilise les signaux pour envoyer les informations entre les thread (pointeurs d'objets) et je fais appel à start() afin de relancer la méthode run() du thread adéquat qui contient l'algorithme de traitement (qui ne boucle pas indéfiniment jusqu'à une demande de terminaison de thread ou jusqu'à une certaine condition).
Donc pour l'instant mes threads (pas tous) s'exécutent, renvoient les résultats via les signaux, meurent, et son relancés par la méthode start(), autant de fois qu'un traitement est à effectuer.
Vu que je n'ai pas besoin de mutex, parce que je n'ai pas d'accès concurrent à une même donnée, je n'ai pas l'utilité de QWaitCondition qui demande un QMutex.
Comment puis-je réveiller ou mettre en attente les thread jusqu'à ce qu'il reçoivent l'ordre de s'exécuter ?
J'essaye aussi d'éviter qu'un thread prenne du temps CPU pour rien, ou quoi que ce soit d'autre qui serait du temps perdu, parce que la machine sur laquelle s'exécutera le programme est doté d'un P4 1Go RAM DDR2 --'.
Merci à tous !
Partager