Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 24/12/2010, à 16:23

mesobius

QThread QT en en boucle -- pour bien comprendre

bonjour,

j'essaie de comprendre les Threads avec QT, mais je n'arrive pas a comprendre le fonctionnement pour mon cas, j'explique

j'ai trouvé pas mal de tutos, exemples bien fait pour mettre en oeuvre un thread QT. jusque la, je comprends a peu pres.
mais la plupart (pour ne pas dire tous) des exemples montre des threads qui execute une tache puis que s'arrete. (comme si on lancait un programme externe qui s'execute et se termine).

par contre, mon cas d'application est different : je voudrais faire un thread qui surveille une communication serie et qui partage les données recues avec l'appli principale, car actuellement, mon appli principal freeze quand j'ai beaucoup de traffic sur la serie.
donc est-ce que j'ai le droit de faire la chose suivante :

dans la fonction run(), je mets un while et je ne sort du while que sur ordre de mon application.
mais si je fais ca, est-ce que l'application parente, qui a créée le thread tourne toujours ou est-ce que le thread tourne en tache de fond par le multitaches ?
est-ce que je dois de temps en temps dans mon while du thread rendre la main au systeme par l'appel d'une fonction ?

c'est cet aspect "bloquant" que j'ai du mal a saisir ....


Developpeur Web & applicatif multiplateformes
http://www.linuxembarque.com
http://www.mesobius.com

Hors ligne

#2 Le 24/12/2010, à 17:04

obiwankennedy

Re : QThread QT en en boucle -- pour bien comprendre

Tu peux créer un QThread ayant une boucle d'event à lui. Dans le run tu lances la boucle d'event, puis quand tu reçois des données sur ta communication tu emets des signaux qui vont bien et c'est bon. Ca devrait suffire pour ce que tu veux faire je pense.


Dans mes logiciels, j'écris ton nom.
SGNGD: SvgGd is Not GD
Rolisteam

Hors ligne

#3 Le 24/12/2010, à 18:52

mesobius

Re : QThread QT en en boucle -- pour bien comprendre

Ok mais ai je le droit de faire un while(1) dans le thread ? Est ce que ça va bloquer toutes mon application principale ? C est la que j ai un gros doute ....


Developpeur Web & applicatif multiplateformes
http://www.linuxembarque.com
http://www.mesobius.com

Hors ligne

#4 Le 25/12/2010, à 11:45

omc

Re : QThread QT en en boucle -- pour bien comprendre

Pas de blocage de l'appli dans ce cas. C'est justement un des intérêt du thread

Hors ligne

#5 Le 30/12/2010, à 10:57

VinsS

Re : QThread QT en en boucle -- pour bien comprendre

Salut,

Un petit conseil, il vaut mieux faire en Python ce qu'il est capable de faire tout seul sans l'apport d'une librairie extérieure.

J'utilise Qt dans tous mes développements. Mais je maintient en Python toutes les tâches qu'il peut exécuter directement.

Dans ton cas, tu trouveras ici, un exemple qui correspond exactement à ce que tu veux faire :
- Un thread pour une tâche de durée non connue.
- Des signaux pour communiquer avec la main loop
Le tout en PyQt

    http://bazaar.launchpad.net/~arte+7reco … arte/files

Cordialement


Vincent
Oqapy      Qarte      PaQager

Hors ligne

#6 Le 03/01/2011, à 13:04

mesobius

Re : QThread QT en en boucle -- pour bien comprendre

tout d'abord,

BONNE ANNEE A TOUS !

pour ce qui est des threads, nickel, ca fonctionne du feu de dieu. reste a blinder un peu le code pour eviter des plantages des threads ou des destructions degueulasses, mais c'est en tres bonnes voies

Concernant Python, je maitrise pas du tout python, je suis plutot C++/pascal objet et php
mais je regarderai python, car je vois souvent des post sur python, ca a l'air sympa

encore un sujet pour 2011 !

Tous mes voeux a tous pour 2011


Developpeur Web & applicatif multiplateformes
http://www.linuxembarque.com
http://www.mesobius.com

Hors ligne