IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Multithreading Discussion :

Bien utiliser QThread et moveToThread()


Sujet :

Multithreading

  1. #1
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 774
    Points : 969
    Points
    969
    Par défaut Bien utiliser QThread et moveToThread()
    Mise à jour : 24/08/2010

    Un traduction issue des Qt labs blog expliquant comment bien comprendre et utiliser la fonction moveToThread() est maintenant en ligne :

    Vous vous y prenez mal...

    Bonne lecture !

    Utiliser vous cette fonction dans vos threads ? Cette explication vous a-t-elle apportée un plus sur l'utilisation que vous en faites ?

    Citation Envoyé par Mise à jour : 22/08/2010

    L'article sur l'exemple du bon usage de QThread a été traduit et est disponible :

    Les threads sans maux de tête

    Que pensez-vous de cette méthode ? Est ce que vous l'utilisez ?

    Citation Envoyé par Message original
    Bonjour,

    J'ai lu cet article il y a quelques jours, et en reparcourant ce forum, j'ai remarqué une chose : trop peu de personnes ont lu cet article !

    C'est en anglais (mais on a une équipe de traducteurs fous, hein ?) mais cet article contient toute la vérité sur le bon usage de QThread.

    J'invite tout le monde à le lire : You're doing it wrong !
    Et voici un exemple du bon usage de QThread (même si l'article avait été écrit avant que cela soit possible):http://labs.trolltech.com/blogs/2006...-the-headache/

    G.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Il me semble qu'il y a un article en préparation à ce sujet...

  3. #3
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Il me semble qu'il est en cours de traduction.

    mais cet article contient toute la vérité sur le bon usage de QThread
    Je dirais plutôt une des vérités. Si tu n'utilise pas l'eventloop dans la thread, cette méthode ne sert à rien.

    Le trés gros avantage que j'y voie et que l'on ne réfléchie pas directement en multithread.
    On créé un QObject qui propose des slots et emet des signaux. Ensuite on peut choisir que l'object s'exécute dans un thread particulier si besoin.

    Il ne faut pas oublier les QtConcurrent qui sont une trés bonne alternative dans de nombreux cas.

  4. #4
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 774
    Points : 969
    Points
    969
    Par défaut
    Si tu n'utilise pas l'eventloop dans la thread, cette méthode ne sert à rien.
    Je suis d'accord, mais ça reste 95% des cas qu'on voit ici.

    Et en effet, à d'autres besoins, d'autres solutions (QtConcurrent ou autre).

    G.

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 354
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 354
    Points : 1 419
    Points
    1 419
    Par défaut
    Je ne suis pas sur que ce soit la meilleure methode (d'utiliser les signaux pour faire la synchro).
    en fait c'est un lock caché (comment les messages sont synchronisés), et je ne suis pas sur que ca marche avec plusieurs consommateurs....

  6. #6
    Rédacteur

    Avatar de johnlamericain
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2004
    Messages
    3 742
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 3 742
    Points : 8 140
    Points
    8 140
    Par défaut
    L'article sur l'exemple du bon usage de QThread a été traduit et est disponible :

    Les threads sans maux de tête

    Que pensez-vous de cette méthode ? Est ce que vous l'utilisez ?

  7. #7
    Rédacteur

    Avatar de johnlamericain
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2004
    Messages
    3 742
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 3 742
    Points : 8 140
    Points
    8 140
    Par défaut
    Un traduction issue des Qt labs blog expliquant comment bien comprendre et utiliser la fonction moveToThread() est maintenant en ligne :

    Vous vous y prenez mal...

    Bonne lecture !

    Utiliser vous cette fonction dans vos threads ? Cette explication vous a-t-elle apportée un plus sur l'utilisation que vous en faites ?

  8. #8
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    821
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 821
    Points : 280
    Points
    280
    Par défaut no so wrong

  9. #9
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Que s'il commence par faire un moveToThread(this) ils sont mal barrés .

    Quand tu hérite de QThread, il faut surtout faire attention à tes slots car il ne sont pas exécuté dans ton thread. Ou pire si tu as fait moveToThread(this) il ne seront pas exécuté si le signal viens d'un autre thread. De mon expérience, si tu as besoin d’hériter de QThread, autant créé un thread système ou utiliser les QtConcurrent ou un pool de thread.

    Pour moi, faire des QObject + moveToThread est plus flexible. Typiquement, cela te permet de créer un nombre de thread limités tout en optimisant leurs utilisations et s’intégrant bien dans l'utilisation de Qt.

Discussions similaires

  1. [MySQL] Bien utiliser addslashes
    Par Ice-tea dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 19/10/2006, 16h06
  2. document pour bien utiliser pgadmin
    Par hama dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 11/11/2005, 11h36
  3. [Optimisation] Comment bien utiliser le StringBuffer?
    Par mathieu dans le forum Langage
    Réponses: 4
    Dernier message: 17/05/2004, 14h22
  4. Comment bien utiliser ce forum ?
    Par Alcatîz dans le forum Pascal
    Réponses: 0
    Dernier message: 21/04/2004, 16h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo