8
votes

Qthreads vs pthreads

J'ai une question rapide. Je suis censé créer un petit programme multithread pour saisir des données à partir de plusieurs capteurs et j'ai des connaissances de Pthreads et de QThreads. J'ai accès aux deux bibliothèques. Personnellement, je suis biaisé vers l'utilisation de QT en raison de sa conception et de ses différentes fonctionnalités. Mais y a-t-il un avantage significatif sur l'utilisation d'un vs l'autre? Merci


0 commentaires

3 Réponses :


2
votes

Je pense au coeur des choses, qthread sous Linux utilise pthread . Je ne suis pas sûr de ce qui est sous le capot pour le côté Windows. Sauf s'il y a quelques fonctions spécifiques pthread API dont vous avez besoin, qui ne sont pas disponibles avec QThread , je colle avec qthread juste pour bénéficier de la portabilité que cela vous donnera. Je ne m'attendrais pas à ce qu'il y ait une différence de performance significative. qthread vous permettra également d'utiliser le mécanisme de signal / emplacement à travers les limites de fil.


0 commentaires

9
votes

QThreads sont construits sur Pthreads. Ils fournissent une abstraction orientée objet, ce qui facilite la tâche de travailler avec des fils. Outre QThreads sont portables, ils peuvent s'exécuter sur tout système utilisant le système de fil sous-jacent, tandis que Pthreads est spécifique des systèmes POSIX.

L'inconvénient presque uniquement d'utiliser QThreads est que vous devez lier votre application contre QT; Cette dépendance pourrait en faire un peu plus difficile de distribuer votre application.


2 commentaires

YA Merci Peoro. J'étais en fait spécifiquement cherché si Trylock () est implémenté à l'aide de pthread_mutex_tryLock. Je pense que c'est comme ça.


Le seul problème de distribution est que vous devez inclure la licence LGPL avec votre code lorsque vous liez de manière dynamique sur les bibliothèques QT (cela suppose que vous utilisez la version source ouverte et non commerciale). Sous Windows, si vous n'êtes pas sûr que vous auriez besoin d'inadéquation pour distribuer, utilisez dépend.exe et il vous dira exactement! dépendencywalker.com



4
votes

Mais vous devez savoir ce que les QThreads utilisent une boucle d'événement pour la gestion, de sorte que vous ne pouvez pas simplement tuer le fil comme avec Pthread. Si les threads font du travail long et dur, il n'est pas possible de l'arrêter pendant que cela ne doit pas être libéré. Dans certains cas, c'est important.


0 commentaires