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 p>
3 Réponses :
Je pense au coeur des choses, qthread code> sous Linux utilise
pthread code>. 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 code> pthread code> API dont vous avez besoin, qui ne sont pas disponibles avec
QThread CODE>, je colle avec
qthread code> 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 code> vous permettra également d'utiliser le mécanisme de signal / emplacement à travers les limites de fil. P>
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. P>
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. P>
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 code> et il vous dira exactement! dépendencywalker.com
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. P>