Qt moveToThread() vs appelant nouveau thread lorsque nous utilisons à chaque
Quand doit-on utiliser chacun de ces appels de fonction dans un filet d'application.
étant donné deux fonctions fun1() et fun2() définie dans la même classe traitant de lecture/écriture de données dans des tampons(file d'attente de l'opération). pour atteindre le multi-threading pour ces. nous avons à exécuter les deux fonctions dans un thread séparé. maintenant, disons que la première fonction de lecture est appelée au début de son filetage.
est-il préférable d'utiliser moveTothread ( deuxième thread)pour
la fonction d'écriture au début de la première
les fonctions de thread
Ou
définir la seconde fonction dans un nouveau
classe thread et l'appeler le fil à
le début de la première du fil.
Vous devez vous connecter pour publier un commentaire.
À l'aide de
moveToThread
nous pouvons changer le fil de l'affinité d'un objet. Ce que l'OP pose est de savoir comment nous pouvons exécuter deux fonctions de la même catégorie dans des threads différents.Laissez classe
A
et deux fonctionsf1
etf2
Qt
déjà fourni une classe pour l'exécution de fonctions dans différents threads et il est appeléQtConcurrentRun
La fonction est déclenchée peut être soit une fonction externe ou une fonction de membre. Dans notre cas, si nous voulions partir de l'objet lui-même pour commencer
f1
etf2
dans différents threads nous avons pu effectuer les opérations suivantes dansrun()
de même, vous pouvez exécuter toute fonction publique de la catégorie simultanément, par exemple,
Notez la différence entre les deux appels:
Afin de vérifier si une exécuté simultanément la fonction terminée, vous devez utiliser un
QFutureWatcher
.Comme Piotr répondu, vous devriez vraiment avoir un oeil sur le lien, il suggère.
Comme je comprends votre problème, ce qui devrait résoudre votre problème.
C'est la simplification de code de ce blog:
consumed()
signal de laproduce()
fente et connecter le producteurfinished()
signal avec le consommateurfinished()
signal. De cette façon, le producteur n'a pas à attendre sur le consommateur, et informe les consommateurs quand il est sécuritaire de le quitter.