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 :

Une solution pour threader le gui


Sujet :

Multithreading

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 3
    Par défaut Une solution pour threader le gui
    Bonjour,

    Je travaille actuellement sur une application qui fait de l'acquisition sur des capteurs de mesures à haute fréquence. Ces informations sont traitées, stockées et affichées.
    La majeur partie des ressources processeur passe pour l'affichage.
    Je souhaite accélérer un peu tout ca en utilisant les thread pour exploiter les architectures multi-core. Le problème est que toutes les opérations relatives au GUI doivent être faites dans le Thread Principale.

    Pour contourner ce problème, je souhaite mettre dans un thread le rendu des fenêtres dans une image, et d'afficher cette image dans le thread principale.

    Mes questions sont :

    Est-ce que c'est possible ? (si oui comment dire a une QFrame de faire le rendu dans une image).
    Est-ce réellement intéressant, car l'affichage des images risque de prendre du temps, surtout qu'il sera difficile de faire des repaint par zone.


    Djoul.

  2. #2
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 035
    Par défaut
    Salut
    Citation Envoyé par djoul63 Voir le message
    Est-ce que c'est possible ? (si oui comment dire a une QFrame de faire le rendu dans une image).
    si tu est dans un thread autre que GUI :
    Dessiner sur une QImage oui mais y dessiner une widget non... Les widget ne peuve êtr emanipulr que par le thread GUI

    A mon avis ce sont plutôt des traitements non graphique que tu doit déporter sur un thread.

  3. #3
    Rédacteur

    Inscrit en
    Novembre 2006
    Messages
    1 272
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 272
    Par défaut
    Citation Envoyé par yan Voir le message
    A mon avis ce sont plutôt des traitements non graphique que tu doit déporter sur un thread.
    Pas mieux que Yan. En général on fait tout les traitements louds dans un Thread et on envoie le resultat de ce traitement à la GUI qui affiche. Ce qu'il faut faire si tu veux gagner en perf a mon avis c'est que la GUI ne fasse uniquement que de l'affichage et pas de traitement.
    Vous voulez participer aux Tutoriels, FAQ ou Traductions et faire partie de l'équipe Qt de Developpez.
    N'hésitez pas à me contacter par MP.

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 3
    Par défaut
    En fait, pour donner un exemple, je trace un graphique avec la lib QWT et une rose des vents (j'ai un anémomètre comme capteur). Dans les 2 cas, il n'y a que très peu de traitements sur les données, mais l'affichage par contre et très couteux (surtout Qwt d'ailleurs).
    Il serait intéressant pour moi d'avoir chaque fenêtre dans un Thread, surtout sur un core i7 avec 8 core virtuels.
    Dans ce cas, sans affichage (tous les traitements mais pas de sortie graphique) je suis à 0% d'utilisation processeur alors que je suis a 100% sur un core quand je les active.

    Dans les autres solutions que je peux envisager pour d'accélérer les affichages c'est de passer par de l'openGL ou du directDraw, mais ça me fait changer énormément de chose.

  5. #5
    Alp
    Alp est déconnecté
    Expert confirmé

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par défaut
    Ce que je te conseille, c'est de répartir le calcul des pixels & co sur plusieurs threads, ensuite tu assembles le résultat (en superposant les différents tableaux de pixels / QImage / whatever) et seulement ensuite tu affiches ça.

    Il ne faut pas faire le calcul dans le thread du GUI, et si tu as un core i7 autant en profiter. Fais les calculs en background avec plusieurs threads, et quand ils ont tous finis, tu émets un signal qui envoie une QImage à ta fenêtre principale, qui via un slot va récupérer ça et l'afficher (ça marche pareil si c'est pas une QImage que tu utilises, mais c'est une solution envisageable, bien que ça soit loin d'être la meilleure niveau perfs).

Discussions similaires

  1. Réponses: 1
    Dernier message: 21/05/2007, 16h14
  2. Une solution pour faire des enums dynamique ?
    Par n!co dans le forum Langage
    Réponses: 7
    Dernier message: 16/12/2006, 14h44
  3. Une solution pour migrer de .NET vers MFC
    Par torNAdE dans le forum MFC
    Réponses: 1
    Dernier message: 03/05/2006, 22h23

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