QThreads , QObject et de la fonction de veille

Le problème que j'ai rencontré c'est que j'ai décidé de mettre en œuvre QThreads la façon dont ils sont censés, basé sur de nombreux articles:

http://blog.qt.digia.com/blog/2010/06/17/youre-doing-it-wrong/

http://mayaposch.wordpress.com/2011/11/01/how-to-really-truly-use-qthreads-the-full-explanation/

et de la question est que, puisque l'algorithme est exécuté en séparer QObject (enveloppé dans QThread) . comment puis-je appeler quelque chose comme Thread::Sleep ou qch .. des idées ?

Une petite description du logiciel.
Fondamentalement, mon application résout TSP ( problème du voyageur de commerce). Que la recherche va de pair, il enregistre tous les états dans l'histoire comme frames ..(comme les visuels des images). Les algorithmes de recherche sera exécutée sur un seul thread .
Thread principal est la manipulation avec le GUI.
Ensuite, il ya la Mediaplayer comme thread qui raconte Main thread quoi une image à afficher sur l'écran. D'où vient donc le sommeil ?
Dans le gui il y a un curseur que l'utilisateur peut utiliser l'avance rapide ou aller dans un rythme normal.. que le curseur indique via le signal de la fente à la Mediaplayer thread pour aller plus vite ou plus lentement.

Juste l'appeler? Merci de poster le code que vous avez, et d'expliquer ce qui ne fonctionne pas avec elle.
le problème, c'est que Qt fait sleep() un protected membre de la QThread classe. Et donc, quand vous écrivez votre fil, comme un logement raccordé à un QThread's de signal, vous n'avez pas d'accès direct à
Ah, ok. Eh bien, vous pouvez simplement sous-classe et de "rexport" la fonction, mais pourquoi êtes-vous essayer de dormir de toute façon? Des chronomètres (ou les conditions d'attente) sont souvent une meilleure solution. Si vous expliqué le problème que vous tentez de résoudre, vous auriez probablement obtenir plus d'informations utiles.
pourquoi le sleep fonction existe? Parce que parfois, le sommeil est effectivement la bonne solution...
La classe QThread est à peine de merde. Quel est votre problème avec elle? Il y a une véritable utilise un thread qui n'est pas basé sur l'événement, puis vous tirer de QThread et réimplémenter void run(). Mais le par défaut façon de faire les choses doivent être toujours en ayant asynchrone, run-pour-code d'achèvement des logements dans un QObject. Voir, par exemple, je Déteste RTOSes par Miro Samek embeddedgurus.com/state-space/2010/04/i-hate-rtoses. Puis, lorsque l'analyse comparative montre que le code que vous voulez exécuter est UC privé (que ce soit par le thread GUI, ou le thread qu'il est déjà en cours), vous vous déplacez à un nouveau thread.

OriginalL'auteur Erich Jagomägis | 2012-05-27